Ruby on rails Rails-如何检查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_

我想显示某个模型的记录总数的变化率。所以我需要知道,在任何给定的时间,24小时前有多少,现在有多少。 记录很可能会被用户删除,因此我不能只使用超过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