如何使特定于某个对象id的rails缓存检索

时间:2013-03-29 10:00:37

标签: ruby-on-rails dalli

对于bar_id = 1,首次访问时会形成缓存。但即使bar_id稍后更改为2,也会保留值1。如何在bar_id(s)

之间使其工作
 @foo = Rails.cache.fetch("foo_by_id", expires_in: 10.minutes) do
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first
 end

1 个答案:

答案 0 :(得分:1)

您的缓存密钥必须包含您要将缓存分开的所有动态数据。 在您的情况下,缓存键必须包含bar_id。我要做的是:

@foo = Rails.cache.fetch("foo_by_id:#{params['bar_id']}", expires_in: 10.minutes) do
    Foo.where(:search => params['search'], :bar_id => params['bar_id']).first
 end