Guest User

Untitled

a guest
Jun 4th, 2018
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. require 'active_record'
  2.  
  3. ActiveRecord::Base.establish_connection(:adapter=>"sqlite3",:database=>":memory:")
  4.  
  5. ActiveRecord::Schema.define do
  6. create_table :events do |table|
  7. table.column :title, :string, :null => false
  8. table.column :start_at, :datetime, :null => false
  9. table.column :end_at, :datetime, :null => false
  10. end
  11.  
  12. create_table :registration_announcements do |table|
  13. table.references :event
  14. table.column :announcement, :string
  15. table.column :cutoff_at, :datetime
  16. end
  17.  
  18. create_table :registrations do |table|
  19. table.references :registration_announcement
  20. table.column :contact_email, :string, :null => false
  21. table.column :adults, :integer, :default => 0
  22. table.column :children, :integer, :default => 0
  23. end
  24. end
  25.  
  26. class Event < ActiveRecord::Base
  27. has_one :registration_announcement
  28. end
  29.  
  30. class RegistrationAnnouncement < ActiveRecord::Base
  31. belongs_to :event
  32. has_many :registrations
  33. end
  34.  
  35. class Registration < ActiveRecord::Base
  36. belongs_to :registration_announcement
  37. end
  38.  
  39. puts 'Scenario 1'
  40. @e1 = Event.create(:title => "Bake Sale", :start_at => '2010-12-15 12pm', :end_at => '2010-12-15 4pm')
  41. @a1 = @e1.build_registration_announcement(:announcement => "Please bring a favorite baked dish.")
  42. @a1.registrations.build(:contact_email => "jdoe@yahoo.com", :adults => 1)
  43. #registration doesn't know about its unsaved registration_announcement parent
  44. puts @a1.registrations.first.registration_announcement #=> nil
  45.  
  46. puts 'Scenario 2'
  47. @e2 = Event.create(:title => "Community Yard Sale", :start_at => '2010-11-16 10am', :end_at => '2010-11-16 3pm')
  48. @a2 = @e2.create_registration_announcement(:announcement => "Fall house cleaning!")
  49. @a2.registrations.build(:contact_email => "tara.smith@yahoo.com", :adults => 5)
  50. #registration knows about its saved registration_announcement parent
  51. puts @a2.registrations.first.registration_announcement #=> <#RegistrationAnnouncement:...>
  52.  
  53. puts 'Scenario 3'
  54. @e3 = Event.create(:title => "Hoagie Sale", :start_at => '2010-11-10 1pm', :end_at => '2010-11-10 6pm')
  55. @a3 = @e3.build_registration_announcement(:announcement => "Italian hoagies for $4.00.")
  56. r = @a3.registrations.build(:contact_email => "ethan.allen@yahoo.com", :adults => 1)
  57. r.registration_announcement = @e.registration_announcement
  58. #registration knows about its unsaved registration_announcement parent but only because we explicitly assigned the parent (line immediately above)
  59. puts @a3.registrations.first.registration_announcement #=> <#RegistrationAnnouncement:...>
Add Comment
Please, Sign In to add comment