我有一张表,每天都会添加新记录.我如何查找上个月创建的记录?
设置命名范围:
named_scope :in_last_month, :conditions => [ "records.created_at > ?", 1.month.ago ]
要调用它(在你的控制器中):
Record.in_last_month
named_scope
我认为这是一种相当优雅的方式,但是如果你采用这种方法,你将需要使用一种lambda
方法,以便在最初加载应用程序时不会限定时间.
例如,这个:
named_scope :last_month, :conditions => ['created_at > ? AND created_at < ?', Date.today.last_month.beginning_of_month, Date.today.beginning_of_month]
将在您的应用程序启动的第一个月正常运行,但在下个月不正确,除非应用程序重新启动.
但是这个:
named_scope :last_month, lambda { {:conditions => ['created_at > ? AND created_at < ?', Date.today.last_month.beginning_of_month, Date.today.beginning_of_month]}}
每次都会工作,因为lambda方法在每次调用时执行,重新评估Date.today
s.