我想显示某个模型的记录总数的变化率。所以我需要知道,在任何给定时间,24 小时前有多少,现在有多少。一条记录很可能会被用户删除,所以我不能只使用超过 24 小时的现有记录的值。
有没有一种简单的方法可以做到这一点?
谢谢
我想显示某个模型的记录总数的变化率。所以我需要知道,在任何给定时间,24 小时前有多少,现在有多少。一条记录很可能会被用户删除,所以我不能只使用超过 24 小时的现有记录的值。
有没有一种简单的方法可以做到这一点?
谢谢
class Item < ActiveRecord::Base
scope :since, lambda {|time| where("created_at > ?", time) }
scope :during_last, lambda {|time| where("created_at > ?", (Time.now - time)) }
end
Item.since(Time.now - 24.hours).count
Item.since(24.hours.ago).count
Item.during_last(24.hours).count
好吧,您可以对 column 进行计数created_at
。
def count_rate(model, time=DateTime.now)
current_count = model.count(:conditions => ["created_at < ?", time])
last_24_hours_count = model.count(:conditions => ["created_at < ?", time-24.hours])
current_count - last_24_hours_count
end
此方法将给定的记录与过去 24 小时进行比较。
好吧,如果用户已经删除了这些记录,您应该创建另一个表并使用(only )Rate(date, hour, count)
每小时记录一次。observer
after_create
def after_create
rate = Rate.find_or_initialize_by(Date.today.to_s, Time.now.hour)
rate.increment(:count)
rate.save!
end
在这个观察者中,如果它按日期和小时找到现有记录,它只会增加计数列。您还将列上的默认值添加为零count
。稍后,您可以按日期和小时从该表中查询数据。