observer.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #---
  2. # Excerpted from "Agile Web Development with Rails",
  3. # published by The Pragmatic Bookshelf.
  4. # Copyrights apply to this code. It may not be used to create training material,
  5. # courses, books, articles, and the like. Contact us if you are in doubt.
  6. # We make no guarantees that this code is fit for any purpose.
  7. # Visit http://www.pragmaticprogrammer.com/titles/rails4 for more book information.
  8. #---
  9. $: << File.dirname(__FILE__)
  10. require "rubygems"
  11. require "active_record"
  12. require 'connect'
  13. ActiveRecord::Base.logger = Logger.new(STDERR)
  14. ActiveRecord::Schema.define do
  15. create_table :payments, :force => true do |t|
  16. end
  17. end
  18. class Order < ActiveRecord::Base
  19. end
  20. class Payment < ActiveRecord::Base
  21. end
  22. class Refund < ActiveRecord::Base
  23. end
  24. class OrderObserver < ActiveRecord::Observer
  25. def after_save(an_order)
  26. an_order.logger.info("Order #{an_order.id} created")
  27. end
  28. end
  29. OrderObserver.instance
  30. class AuditObserver < ActiveRecord::Observer
  31. observe Order, Payment, Refund
  32. def after_save(model)
  33. model.logger.info("[Audit] #{model.class.name} #{model.id} created")
  34. end
  35. end
  36. AuditObserver.instance
  37. o = Order.create
  38. p = Payment.create