一种方法是为每个模型添加after_save
回调。但是有7个模型,所以最好将这个功能放在一个地方。
有更好的方法吗?也许通过重新打开Mongoid :: Document模块?
实际上我认为after_save
本身不会起作用。可能还需要包含after_update
和after_destroy
......?
答案 0 :(得分:2)
典型的答案是mongoid-observers。观察者是一个接收被观察类实例的回调的类,可以执行缓存清除等事情。
使用它非常简单 - 您只需定义要观察的模型,然后实现回调。例如:
class PostObserver < Mongoid::Observer
observe :post, :gallery
def after_update(record)
clear_cache_for record
end
def after_destroy(record)
clear_cache_for record
end
private
def clear_cache_for(record)
Rails.cache.clear record.cache_key
end
end