diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2011-05-17 20:37:11 +0100 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2011-05-17 20:43:30 +0100 |
commit | 42f1ad68655be08a0ff7e5a261d1ad21d3fc90a5 (patch) | |
tree | b38279cb013fdce55ff81329a44aa55b29460a7c /activerecord/test/cases/associations | |
parent | b81f77e2e23d3792cd95f7b86158875a3a6a0dc2 (diff) | |
download | rails-42f1ad68655be08a0ff7e5a261d1ad21d3fc90a5.tar.gz rails-42f1ad68655be08a0ff7e5a261d1ad21d3fc90a5.tar.bz2 rails-42f1ad68655be08a0ff7e5a261d1ad21d3fc90a5.zip |
Pass the attribute and option hashes to build_association
The build_association method was added as an API for plugins
to hook into in 1398db0. This commit restores this API and the
ability to override class.new to return a subclass based on
a virtual attribute in the attributes hash.
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 13 | ||||
-rw-r--r-- | activerecord/test/cases/associations/has_one_associations_test.rb | 16 |
2 files changed, 29 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 0e33fa9c8e..522ac56d82 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -1455,4 +1455,17 @@ class HasManyAssociationsTest < ActiveRecord::TestCase assert_equal "RED!", car.bulbs.to_a.first.color end + + def test_new_is_called_with_attributes_and_options + car = Car.create(:name => 'honda') + + bulb = car.bulbs.build + assert_equal Bulb, bulb.class + + bulb = car.bulbs.build(:bulb_type => :custom) + assert_equal Bulb, bulb.class + + bulb = car.bulbs.build({ :bulb_type => :custom }, :as => :admin) + assert_equal CustomBulb, bulb.class + end end diff --git a/activerecord/test/cases/associations/has_one_associations_test.rb b/activerecord/test/cases/associations/has_one_associations_test.rb index 356a4a7a09..38e622f90f 100644 --- a/activerecord/test/cases/associations/has_one_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_associations_test.rb @@ -410,4 +410,20 @@ class HasOneAssociationsTest < ActiveRecord::TestCase bulb = car.create_frickinawesome_bulb(:frickinawesome => false) assert_equal true, bulb.frickinawesome? end + + def test_new_is_called_with_attributes_and_options + car = Car.create(:name => 'honda') + + bulb = car.build_bulb + assert_equal Bulb, bulb.class + + bulb = car.build_bulb + assert_equal Bulb, bulb.class + + bulb = car.build_bulb(:bulb_type => :custom) + assert_equal Bulb, bulb.class + + bulb = car.build_bulb({ :bulb_type => :custom }, :as => :admin) + assert_equal CustomBulb, bulb.class + end end |