web-dev-qa-db-ja.com

Rails 3オブザーバー-複数のモデルにオブザーバーを実装する方法を学びたい

3つのモデル(本、キャラクター、作者)のafter_createでいつでもアクションを実行するAuditorObserverを追加したいと思います...

最近、オブザーバー機能について聞いたのですが、その機能に関するドキュメントが見つかりません。 Rails 3でサポートされていますか?

3つのモデルに対してafter_createを実行するAuditorObserverを作成するにはどうすればよいですか?

ありがとう

26
AnApprentice

Rails observers 甘い、1つのobserver内で複数のモデルをobserveできます

まず、オブザーバーを生成する必要があります。

Rails g observer Auditor

次に、新しいauditor_observer.rbファイルで、observeするモデルを定義してから、after_createコールバックを追加します。

 class AuditorObserver < ActiveRecord::Observer
   observe :model_foo, :model_bar, :model_baz

   def after_create(record)
    #do something with `record`
   end
 end 

Application.rbに追加

config.active_record.observers = :auditor_observer

そしてそれはうまくいくはずです。

58
jpemberthy