Changeset 9232
- Timestamp:
- 04/06/08 02:32:51 (1 year ago)
- Files:
-
- trunk/activerecord/CHANGELOG (modified) (1 diff)
- trunk/activerecord/lib/active_record/associations.rb (modified) (2 diffs)
- trunk/activerecord/test/cases/associations_test.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activerecord/CHANGELOG
r9231 r9232 1 1 *SVN* 2 3 * Ensure that save on parent object fails for invalid has_one association. Closes #10518. [Pratik] 2 4 3 5 * Remove duplicate code from associations. [Pratik] trunk/activerecord/lib/active_record/associations.rb
r9230 r9232 785 785 after_save method_name 786 786 787 add_single_associated_save_callbacks(reflection.name) 787 788 association_accessor_methods(reflection, HasOneAssociation) 788 789 association_constructor_method(:build, reflection, HasOneAssociation) … … 1142 1143 end 1143 1144 1145 def add_single_associated_save_callbacks(association_name) 1146 method_name = "validate_associated_records_for_#{association_name}".to_sym 1147 define_method(method_name) do 1148 association = instance_variable_get("@#{association_name}") 1149 if !association.nil? 1150 errors.add "#{association_name}" unless association.target.nil? || association.valid? 1151 end 1152 end 1153 1154 validate method_name 1155 end 1156 1144 1157 def add_multiple_associated_save_callbacks(association_name) 1145 1158 method_name = "validate_associated_records_for_#{association_name}".to_sym trunk/activerecord/test/cases/associations_test.rb
r9230 r9232 434 434 assert_equal a, firm.account(true) 435 435 end 436 437 def test_save_fails_for_invalid_has_one 438 firm = Firm.find(:first) 439 assert firm.valid? 440 441 firm.account = Account.new 442 443 assert !firm.account.valid? 444 assert !firm.valid? 445 assert !firm.save 446 assert_equal "is invalid", firm.errors.on("account") 447 end 436 448 437 449 def test_assignment_before_either_saved