Rails:查询缓存缓存默认范围?

时间:2011-03-10 09:06:06

标签: ruby-on-rails caching default scoping

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

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

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

但第二天似乎还在使用"departure_date >= 28-03-2011"

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

1 个答案:

答案 0 :(得分:10)

问题是,当您的应用程序加载时,该代码只会被执行一次,因此实际日期不会改变。您需要将其更改为懒惰加载:

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

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