Pie*_*rre 2 ruby-on-rails heroku
我有一个名称范围,它将查询结果作为参数:
scope :current_budget, where(:budget_review => Appconfig.budget_status)
Run Code Online (Sandbox Code Playgroud)
方法budget_status本身定义为
def self.budget_status
Appconfig.find_by_name('reviewed_budget').value=="1" ? true : false
end
Run Code Online (Sandbox Code Playgroud)
在本地测试时,如果我更改了"Viewed_budget"参数的值,然后再次调用范围,一切正常.
但是在Heroku上,即使我更改了参数,也会给我相同的结果.我试图在Heroku上显示Appconfig.budget_status的值,当我更改设置时它会改变.
仍然,named_scope似乎没有考虑到这一点.
这里有一些缓存技巧吗?如果是这样,我如何摆脱这种特殊情况呢?否则,有没有人知道可能出现什么问题?
谢谢,p.
当你在本地测试时,我假设你运行一个开发环境,它会在每次调用时重新加载你的所有代码,并因此避免这个问题.在生产(Heroku)中,如果像你当前那样使用它,它将缓存范围,而不是结果,而不是查询.
要确保查询未缓存,您可以使用以下语法:
scope :current_budget, lambda { where(:budget_review => Appconfig.budget_status) }
Run Code Online (Sandbox Code Playgroud)
lambda是这种情况的不同之处.
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |