** 概要 [#k97a675a]
   class CommentObserver < ActiveRecord::Observer
     def after_save(comment)
       Notifications.deliver_comment("admin@do.com", "New comment was posted", comment)
     end
   end
 のようにObserverクラスを用意しておく。
 これで、Comment#saveが呼ばれると、admin@do.comにメールが飛ぶ。
 
 ** クラス名から監視するクラスが決定できない場合 [#t7db2b58]
   class AuditObserver < ActiveRecord::Observer
     observe Account
 
     def after_update(account)
       AuditTrail.new(account, "UPDATED")
     end
   end
 - これで、Account#saveが呼ばれたあとにAuditObserver#after_saveが呼ばれる
 - AuditObserverがAccountのほかに、Balanceも監視したい場合は、複数指定可能。
   class AuditObserver < ActiveRecord::Observer
     observe Account, Balance
 
     def after_update(record)
       AuditTrail.new(record, "UPDATED")
     end
   end
 
 ** 監視できるメソッドは [#m8736494]
 http://railsapi.masuidrive.jp/module/ActiveRecord%3A%3ACallbacks
 
 ** Observerのクラスを置く場所 [#ic94ebf8]
 - 普通は、app/model以下
 
 ** Observerを有効にするには [#af9a7c94]
 config/environment.rb内で、config.active_record.observersに設定を追加する必要がある。
   config.active_record.observers = :comment_observer, :signup_observer
 この設定をしないと実行されない。
 
 #blikifooter(志田)
 
 tag: [[Ruby on Rails>tag/Ruby on Rails]]
 
 

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら