保存Mongoid模型时更新缓存的好方法是什么?

时间:2015-02-03 23:47:54

标签: ruby mongoid

一种方法是为每个模型添加after_save回调。但是有7个模型,所以最好将这个功能放在一个地方。

有更好的方法吗?也许通过重新打开Mongoid :: Document模块?

实际上我认为after_save本身不会起作用。可能还需要包含after_updateafter_destroy ......?

1 个答案:

答案 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