diff options
author | Luciano G Panaro <contact@decodeuri.com> | 2009-09-26 10:33:50 -0300 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2009-09-28 14:50:33 +1300 |
commit | 4168f876238982d0d584006f50188071928a8b7f (patch) | |
tree | 93e22b323a8f3bf25c5e67697a347e1fb958b0a0 /activerecord/test | |
parent | d48ebeade2d907573e3fb086495b57b10115066c (diff) | |
download | rails-4168f876238982d0d584006f50188071928a8b7f.tar.gz rails-4168f876238982d0d584006f50188071928a8b7f.tar.bz2 rails-4168f876238982d0d584006f50188071928a8b7f.zip |
Make has_one with :conditions hash scope build or creation of the associated object with those conditions
Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#3088 state:committed]
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/associations/has_one_associations_test.rb | 18 | ||||
-rw-r--r-- | activerecord/test/cases/reflection_test.rb | 4 | ||||
-rw-r--r-- | activerecord/test/models/company.rb | 2 |
3 files changed, 22 insertions, 2 deletions
diff --git a/activerecord/test/cases/associations/has_one_associations_test.rb b/activerecord/test/cases/associations/has_one_associations_test.rb index cdac86a3b9..289c89d1e2 100644 --- a/activerecord/test/cases/associations/has_one_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_associations_test.rb @@ -315,4 +315,22 @@ class HasOneAssociationsTest < ActiveRecord::TestCase Firm.find(@firm.id, :include => :account).save! end end + + def test_build_respects_hash_condition + account = companies(:first_firm).build_account_limit_500_with_hash_conditions + assert account.save + assert_equal 500, account.credit_limit + end + + def test_create_respects_hash_condition + account = companies(:first_firm).create_account_limit_500_with_hash_conditions + assert !account.new_record? + assert_equal 500, account.credit_limit + end + + def test_create!_respects_hash_condition + account = companies(:first_firm).create_account_limit_500_with_hash_conditions! + assert !account.new_record? + assert_equal 500, account.credit_limit + end end diff --git a/activerecord/test/cases/reflection_test.rb b/activerecord/test/cases/reflection_test.rb index 0eb2da720e..f3ed8ccd8d 100644 --- a/activerecord/test/cases/reflection_test.rb +++ b/activerecord/test/cases/reflection_test.rb @@ -176,9 +176,9 @@ class ReflectionTest < ActiveRecord::TestCase def test_reflection_of_all_associations # FIXME these assertions bust a lot - assert_equal 35, Firm.reflect_on_all_associations.size + assert_equal 36, Firm.reflect_on_all_associations.size assert_equal 26, Firm.reflect_on_all_associations(:has_many).size - assert_equal 9, Firm.reflect_on_all_associations(:has_one).size + assert_equal 10, Firm.reflect_on_all_associations(:has_one).size assert_equal 0, Firm.reflect_on_all_associations(:belongs_to).size end diff --git a/activerecord/test/models/company.rb b/activerecord/test/models/company.rb index b1a3930e4e..469f5399ae 100644 --- a/activerecord/test/models/company.rb +++ b/activerecord/test/models/company.rb @@ -81,6 +81,8 @@ class Firm < Company has_one :account_using_foreign_and_primary_keys, :foreign_key => "firm_name", :primary_key => "name", :class_name => "Account" has_one :deletable_account, :foreign_key => "firm_id", :class_name => "Account", :dependent => :delete + has_one :account_limit_500_with_hash_conditions, :foreign_key => "firm_id", :class_name => "Account", :conditions => { :credit_limit => 500 } + has_one :unautosaved_account, :foreign_key => "firm_id", :class_name => 'Account', :autosave => false has_many :accounts has_many :unautosaved_accounts, :foreign_key => "firm_id", :class_name => 'Account', :autosave => false |