Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'active_record'
- ActiveRecord::Base.establish_connection(:adapter=>"sqlite3",:database=>":memory:")
- ActiveRecord::Schema.define do
- create_table :events do |table|
- table.column :title, :string, :null => false
- table.column :start_at, :datetime, :null => false
- table.column :end_at, :datetime, :null => false
- end
- create_table :registration_announcements do |table|
- table.references :event
- table.column :announcement, :string
- table.column :cutoff_at, :datetime
- end
- create_table :registrations do |table|
- table.references :registration_announcement
- table.column :contact_email, :string, :null => false
- table.column :adults, :integer, :default => 0
- table.column :children, :integer, :default => 0
- end
- end
- class Event < ActiveRecord::Base
- has_one :registration_announcement
- end
- class RegistrationAnnouncement < ActiveRecord::Base
- belongs_to :event
- has_many :registrations
- end
- class Registration < ActiveRecord::Base
- belongs_to :registration_announcement
- end
- puts 'Scenario 1'
- @e1 = Event.create(:title => "Bake Sale", :start_at => '2010-12-15 12pm', :end_at => '2010-12-15 4pm')
- @a1 = @e1.build_registration_announcement(:announcement => "Please bring a favorite baked dish.")
- @a1.registrations.build(:contact_email => "jdoe@yahoo.com", :adults => 1)
- #registration doesn't know about its unsaved registration_announcement parent
- puts @a1.registrations.first.registration_announcement #=> nil
- puts 'Scenario 2'
- @e2 = Event.create(:title => "Community Yard Sale", :start_at => '2010-11-16 10am', :end_at => '2010-11-16 3pm')
- @a2 = @e2.create_registration_announcement(:announcement => "Fall house cleaning!")
- @a2.registrations.build(:contact_email => "tara.smith@yahoo.com", :adults => 5)
- #registration knows about its saved registration_announcement parent
- puts @a2.registrations.first.registration_announcement #=> <#RegistrationAnnouncement:...>
- puts 'Scenario 3'
- @e3 = Event.create(:title => "Hoagie Sale", :start_at => '2010-11-10 1pm', :end_at => '2010-11-10 6pm')
- @a3 = @e3.build_registration_announcement(:announcement => "Italian hoagies for $4.00.")
- r = @a3.registrations.build(:contact_email => "ethan.allen@yahoo.com", :adults => 1)
- r.registration_announcement = @e.registration_announcement
- #registration knows about its unsaved registration_announcement parent but only because we explicitly assigned the parent (line immediately above)
- puts @a3.registrations.first.registration_announcement #=> <#RegistrationAnnouncement:...>
Add Comment
Please, Sign In to add comment