使Rails缓存中的特定模型无效

问题描述 投票:9回答:1

我正在使用带有Memcached的Rails 3来缓存某些模型。当模型更改时,我想使该记录的缓存无效。对于视图片段,我只说expire_fragment("blah")。如何使用我的模型执行此操作?我不想说Rails.cache.clear而丢掉整个事情。我想要类似Rails.cache.invalidate("/users/5")的内容。我该怎么办?

ruby-on-rails-3 caching memcached
1个回答
18
投票

您没有提到将模型实际添加到缓存的时间。您可以尝试使用after_save挂钩使模型缓存无效。

class Model < AR::Base

  after_save :invalidate_cache

  private
  def invalidate_cache
     Rails.cache.delete("/users/#{self.id}")
     return true # recommended to return true, as Rails.cache.delete will return false if no cache is found and break the callback chain. 
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.