我正在使用带有Memcached的Rails 3来缓存某些模型。当模型更改时,我想使该记录的缓存无效。对于视图片段,我只说expire_fragment("blah")
。如何使用我的模型执行此操作?我不想说Rails.cache.clear
而丢掉整个事情。我想要类似Rails.cache.invalidate("/users/5")
的内容。我该怎么办?
您没有提到将模型实际添加到缓存的时间。您可以尝试使用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