Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RoR:命名为_范围,在过去7天内创建的所有记录?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails RoR:命名为_范围,在过去7天内创建的所有记录?

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}

如何定义命名范围以返回过去7天内创建的所有记录,然后如何在控制器中使用该命名范围?

您需要向命名范围传递一个过程,以便在每次运行对命名范围的调用时对其进行评估。否则,如果您指定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新手,但我绝对喜欢这个功能!