tip*_*bis 3 caching default ruby-on-rails scoping
我有一个像这样的默认范围是动态的:
default_scope :conditions => ["departure_date >= ?", DateTime.current.beginning_of_day]
Run Code Online (Sandbox Code Playgroud)
当我使用这段代码时,第一天就可以了.让我们说第一天是28-03-2011
但第二天似乎还在使用 "departure_date >= 28-03-2011"
我的默认范围是否被缓存?
Dan*_*ail 10
问题是该代码只在您的应用程序加载时执行一次,因此实际日期不会改变.您需要将其更改为懒惰加载:
default_scope lambda { { :conditions => ["departure_date >= ?", DateTime.current.beginning_of_day] } }
Run Code Online (Sandbox Code Playgroud)
这样,Datetime.current.beginning_of_day每次进行查询时都会对其进行评估.
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |