From 7ddc8f2e1bc9c818b622373a8c85bd679533cefd Mon Sep 17 00:00:00 2001 From: Pratik Naik Date: Sun, 6 Apr 2008 02:32:51 +0000 Subject: Ensure that save on parent object fails for invalid has_one association. Closes #10518. [Pratik] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9232 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/lib/active_record/associations.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'activerecord/lib/active_record/associations.rb') diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index 0acc63bd69..7d27b0607a 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -784,6 +784,7 @@ module ActiveRecord end after_save method_name + add_single_associated_save_callbacks(reflection.name) association_accessor_methods(reflection, HasOneAssociation) association_constructor_method(:build, reflection, HasOneAssociation) association_constructor_method(:create, reflection, HasOneAssociation) @@ -1141,6 +1142,18 @@ module ActiveRecord end end + def add_single_associated_save_callbacks(association_name) + method_name = "validate_associated_records_for_#{association_name}".to_sym + define_method(method_name) do + association = instance_variable_get("@#{association_name}") + if !association.nil? + errors.add "#{association_name}" unless association.target.nil? || association.valid? + end + end + + validate method_name + end + def add_multiple_associated_save_callbacks(association_name) method_name = "validate_associated_records_for_#{association_name}".to_sym ivar = "@#{association_name}" -- cgit v1.2.3