Ruby on rails RoR:命名为_范围,在过去7天内创建的所有记录?
如何定义命名范围以返回过去7天内创建的所有记录,然后如何在控制器中使用该命名范围?您需要向命名范围传递一个过程,以便在每次运行对命名范围的调用时对其进行评估。否则,如果您指定Time.now,它将运行一次(第一次调用时)并被“缓存”,直到应用程序重新启动Ruby on rails RoR:命名为_范围,在过去7天内创建的所有记录?,ruby-on-rails,ruby,Ruby On Rails,Ruby,如何定义命名范围以返回过去7天内创建的所有记录,然后如何在控制器中使用该命名范围?您需要向命名范围传递一个过程,以便在每次运行对命名范围的调用时对其进行评估。否则,如果您指定Time.now,它将运行一次(第一次调用时)并被“缓存”,直到应用程序重新启动 named_scope \ :this_week, :conditions => [ %created_at > :time!, proc {{:time => Time.now}
named_scope \
:this_week,
:conditions => [
%created_at > :time!,
proc {{:time => Time.now}}
]
您可以像这样调用命名的\u范围
@ar_对象。本周,我建议你看电影 理想情况下,您要查找的代码是:
named_scope :recent,
lambda { |*args| {:conditions => ["created_at > ?", (args.first || 7.days.ago)]} }
这将允许您将参数传递给指定的作用域,或者默认为前7天
您可以使用以下方法将其称为:
MyModel.recent
我在寻找过去7天可以返回的记录,即不包括今天。但这对我来说是有效的,它可以在过去的n天内有效
scope :last_n_days, lambda {|n| where('created_at BETWEEN ? AND ?', Date.today - n, Date.today - 1)}
那个例子会出错。“未知类型的%string%创建于”我还是Rails新手,但我绝对喜欢这个功能!