RailsではObserverパターンが簡単に利用できるみたい。知らんかった。
これを使うとモデル共通のcallbackを定義できたりします。
やり方
昨日書いた、Railsのtimestampsのカラム名を変更する方法 をovserverで書き直してみました。
observer
#app/models/audit_observer.rb
class AuditObserver < ActiveRecord::Observer observe User, Article def before_create(model) current_time = Time.now model.add_date = current_time model.upd_date = current_time end def before_update(model) model.upd_date = Time.now end end
config/environment.rb
config.active_record.observers = :audit_observer
感想
これは簡単でいいわ。