2011-10-31 63 views
1

我需要在更新後過期父模型的緩存,但如果更新刪除父關聯,則不會找到父項,因此緩存未過期。 watdo & ___ &緩存拼圖:到期刪除模型

這實際上是freedrull的問題,所以他會補充說明。

+0

你能否提供更多的信息:「已經在after_update

before_update :save_associations after_update :expire_old_associations def save_associations @associations_to_check = self.widgets end def expire_old_associations diff = @associations_to_check - self.widgets expire_fragments_for(diff) if diff.present? end 

瞭解可用的回調改變了這裏? (例如,您使用的是什麼語言/框架?您嘗試過什麼?...) –

+1

我正在使用rails,在清理程序中使用after_update調用過期分段高速緩存。 – freedrull

+0

我想我可以使用before_update,這是否存在? – freedrull

回答

0

after_update確實會成爲您需要的,儘管協會也可能不會這麼做。 我建議通過創建一個after_update來測試這個假設,它只是放置已刪除的關聯。如果你仍然可以獲取它 - 那很好。用它來清除緩存碎片。

否則我建議一種「圍繞」回調,有點哈克的,但應該得到你所需要的:

在before_update回調

,保存@variable你的協會,然後檢查他們

http://apidock.com/rails/ActiveRecord/Callbacks

+0

然而,沒有模型實際上被破壞,只是一個關聯正在被刪除。也許我可以以某種方式使用notify_observer?或者我需要在我的模型上設置:dependent屬性? – freedrull

+0

啊,我誤解了你的問題。 依賴也與你在銷燬時會發生什麼有關,所以它很有用,但不是你所需要的。我會適當地編輯我的答案。 –