ActiveRecord のコールバック
実装の仕方
- インスタンスメソッドを定義
class Hoge < ActiveRecord::Base def before_save end end
- ブロック
class Hoge < ActiveRecord::Base before_save do |model| end end
- メソッドシンボル
class Hoge < ActiveRecord::Base before_save :foobar protected def foobar end end
- コールバックオブジェクト
コールバックオブジェクトは普通、app/modelsに置く。
class SinkEvents def before_validation(model) end def before_save(model) end def bofore_create(model) end end class Hoge < ActiveRecord::Base sink = SinkEvents.new before_save sink before_save sink before_create sink end
- オブザーバ
オブザーバは普通、app/modelsに置く。
class HogeObserver < ActiveRecord::Observer def before_save(model) end end または class XxxObserver < ActiveRecord::Observer observe Hoge, Huga def before_save(model) end end config/environment.rbで、 config.active_record.observers = :hoge_observer, :xxx_observer