3

我有一个这样的默认范围,它是动态的:

default_scope :conditions => ["departure_date >= ?", DateTime.current.beginning_of_day]

当我使用此代码时,第一天就可以了。假设第一天是 28-03-2011

但是第二天好像还在用"departure_date >= 28-03-2011"

我的默认范围是否被缓存?

4

1 回答 1

10

问题是该代码仅在您的应用程序加载时执行一次,因此实际日期没有改变。您需要将其更改为延迟加载:

default_scope lambda { { :conditions => ["departure_date >= ?", DateTime.current.beginning_of_day] } }

这样,Datetime.current.beginning_of_day每次进行查询时都会进行评估。

于 2011-03-10T09:14:35.203 回答