在Heroku上缓存了named_scope?

时间:2011-01-18 07:26:15

标签: ruby-on-rails heroku

我有一个名称范围,它将查询结果作为参数:

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似乎没有考虑到这一点。

这里有一些缓存技巧吗?如果是这样,我如何摆脱这种特殊情况呢? 另外,有没有人知道可能出现什么问题?

感谢, 第

1 个答案:

答案 0 :(得分:7)

当你在本地测试时,我假设你运行的开发环境会在每次调用时重新加载你的所有代码,并因此避免这个问题。在生产(Heroku)中,如果像你当前一样使用它,它将缓存范围,而不是查询结果。

要确保不缓存查询,可以使用以下语法:

scope :current_budget, lambda { where(:budget_review => Appconfig.budget_status) }

lambda就是这种情况的不同之处。