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