2008-11-25 49 views

回答

6

我会建议看Railscast Episode on named_scope

理想情况下,你要寻找的代码如下:

named_scope :recent, 
    lambda { |*args| {:conditions => ["created_at > ?", (args.first || 7.days.ago)]} } 

这将允许您将参数传递到指定的范围或将默认为前7天。

你会使用称之为:

MyModel.recent 
+0

很好,谢谢。 – 2008-11-25 18:32:12

0

您需要将named_scope传递给proc,以便每次调用named_scope时都会对其进行评估。否则,如果您指定Time.now,它将运行一次(在第一次调用时)并被“缓存”,直到应用程序重新启动。

named_scope \ 
    :this_week, 
    :conditions => [ 
     %created_at > :time!, 
     proc {{:time => Time.now}} 
    ] 

可以调用像 的named_scope @ ar_object.this_week

+0

该示例引发错误。 “未知类型%string%created_at” – 2008-11-25 18:20:18