我正在片段缓存这个片段:
<% cache('fragment-id') do %>
<div id="fragment-id">
<%= render @object %>
</div>
<% end %>
现在,显然,每次更新对象时我都需要使缓存失效(从db角度讲)。
所以我应该把这一行:
expire_fragment('fragment-id')
每次操作更新(或保存)对象时,...控制器之间的所有位置。
但我想知道是否有 DRYer方式来做这件事,比如在对象模型(/ app / models / object)中编写某种钩子。 rb)在每次更新(或保存)时触发expire_fragment命令。
有可能吗?
编辑#1:
也许我可以像这样覆盖对象模型中的save方法:
def save
expire_fragment('fragment-id')
super
end
但是,为了使其正常工作,我必须确保“保存”方法也被所有调用其他保存方法,如* update_attributes *, save!<这是真的吗?