class Book < ActiveRecord::Base after_destroy :history_book private def history_book logger.info('deleted: ' + self.inspect) end
deleted: #<Book id: 24, isbn: "978-4-7980-2812-0", title: "タイトル", price: 100, publish: "出版社B", published: "2011-12-17", cd: false, created_at: "2011-12-17 00:03:15", updated_at: "2011-12-17 00:03:15">
class Book < ActiveRecord::Base after_destroy do |b| logger.info('deleted: ' + self.inspect) end
class BookCallbacks cattr_accessor :logger # この中でloggerクラスを直接使えないので、 self.logger ||= Rails.logger # Railsのloggerを取得して使ってる def after_destroy(b) logger.info('deleted: ' + b.inspect) end end
class Book < ActiveRecord::Base after_destroy BookCallbacks.new
C:\user\dev\railbook\app>rails g observer Book invoke active_record create app/models/book_observer.rb invoke test_unit create test/unit/book_observer_test.rb
class BookObserver < ActiveRecord::Observer cattr_accessor :logger # この中でloggerクラスを直接使えないので、 self.logger ||= Rails.logger # Railsのloggerを取得して使ってる def after_save(b) logger.info('saved: ' + b.inspect) end end
Railbook::Application.configure do config.active_record.observers = :book_observer