0

我片段缓存该片段:如何到期片段缓存的对象更新对象指数

<% cache('fragment-id') do %> 
    <div id="fragment-id"> 
     <%= render @object %> 
    </div> 
<% end %> 

现在,很明显,我需要每一个对象更新时间过期高速缓存(讲话从数据库的角度来看)。

所以我应该把这个行:

expire_fragment('fragment-id') 

...在这里和那里的控制器中,每次行动更新(或节省)的对象

但我不知道是否有一个机方式做到这一点,就像在对象模型(/app/models/object.rb)触发的每次expire_fragment命令写某种挂钩更新(或保存)。

可能吗?

编辑#1:

也许我可以只覆盖保存方法的对象模型是这样的:

def save 
    expire_fragment('fragment-id') 
    super 
end 

但是,为了使这个正常工作,我必须肯定的是, “保存”的方法也被全部调用其他的保存方法如* update_attributes *,保存!等等,是这样吗?

回答

2

您可以使用Sweeper观察您的物体,并在其内部为更新添加挂钩。阅读关于清扫器there

+0

不错,我忘记了清扫车......它的工作原理! – Darme