我有一个名称范围,它将查询结果作为参数:
scope :current_budget, where(:budget_review => Appconfig.budget_status)
方法budget_status本身定义为
def self.budget_status
Appconfig.find_by_name('reviewed_budget').value=="1" ? true : false
end
在本地测试时,如果我更改了“Viewed_budget”参数的值,然后再次调用范围,一切正常。
但是在Heroku上,即使我更改了参数,它总会给我相同的结果。 我试图在Heroku上显示Appconfig.budget_status的值,当我更改设置时它会改变。
仍然,named_scope似乎没有考虑到这一点。
这里有一些缓存技巧吗?如果是这样,我如何摆脱这种特殊情况呢? 另外,有没有人知道可能出现什么问题?
感谢, 第
答案 0 :(得分:7)
当你在本地测试时,我假设你运行的开发环境会在每次调用时重新加载你的所有代码,并因此避免这个问题。在生产(Heroku)中,如果像你当前一样使用它,它将缓存范围,而不是查询结果。
要确保不缓存查询,可以使用以下语法:
scope :current_budget, lambda { where(:budget_review => Appconfig.budget_status) }
lambda就是这种情况的不同之处。