0

对于 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
4

1 回答 1

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
于 2013-03-29T12:02:01.087 回答