aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations/has_one_associations_test.rb
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2011-05-17 20:37:11 +0100
committerAndrew White <andyw@pixeltrix.co.uk>2011-05-17 20:43:30 +0100
commit42f1ad68655be08a0ff7e5a261d1ad21d3fc90a5 (patch)
treeb38279cb013fdce55ff81329a44aa55b29460a7c /activerecord/test/cases/associations/has_one_associations_test.rb
parentb81f77e2e23d3792cd95f7b86158875a3a6a0dc2 (diff)
downloadrails-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/has_one_associations_test.rb')
-rw-r--r--activerecord/test/cases/associations/has_one_associations_test.rb16
1 files changed, 16 insertions, 0 deletions
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