缓存难题:已删除的模型到期

时间:2011-10-31 20:56:27

标签: ruby-on-rails caching

我需要在更新后使父模型的缓存失效,但如果更新删除了父关联,则不会找到父关联,因此缓存不会过期。 watdo& ___&

这实际上是freedrull的问题所以他会加上任何澄清。

1 个答案:

答案 0 :(得分:0)

after_update确实是你所需要的,尽管那时候的关联也可能已经消失了。 我建议通过创建一个只删除关联的after_update来测试这个假设。如果你仍然可以获取它 - 那很好。用它来清除缓存碎片。

否则我会建议一种“周围”回调,有点hacky,但应该得到你需要的东西:

<_>在before_update回调中,为你的关联保存一个@variable,然后检查它们是否在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

请在此处查看可用的回调:

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