Ruby on rails Rails-如何检查24小时前模型的记录计数
我想显示某个模型的记录总数的变化率。所以我需要知道,在任何给定的时间,24小时前有多少,现在有多少。 记录很可能会被用户删除,因此我不能只使用超过24小时的现有记录的值 有没有一个简单的方法可以做到这一点Ruby on rails Rails-如何检查24小时前模型的记录计数,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我想显示某个模型的记录总数的变化率。所以我需要知道,在任何给定的时间,24小时前有多少,现在有多少。 记录很可能会被用户删除,因此我不能只使用超过24小时的现有记录的值 有没有一个简单的方法可以做到这一点 谢谢那么,您可以对在创建的列进行计数 def count_rate(model, time=DateTime.now) current_count = model.count(:conditions => ["created_at < ?", time]) last_24_
谢谢那么,您可以对在创建的
列进行计数
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
在这个观察器中,如果它按日期和小时查找现有记录,它只需增加count列。您还可以将count
列上的默认值添加到零。稍后,您可以按日期和小时从该表中查询数据。class Itemclass 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
范围:自,lambda{time | where(“创建时间>?”,time)}
范围:在上一个时间段,lambda{time | where(“created_at>?”,(time.now-time))}
结束
物品。自(Time.now-24.hours)。计数
物品。自(24小时前)。计数
物品。在最后(24小时)内。计数
这是我的第一个想法,但很可能记录会被用户删除,因此最后24小时的计数值不一定会累积。将更新OP以反映这一点。
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