diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-04-06 02:32:51 +0000 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-04-06 02:32:51 +0000 |
commit | 7ddc8f2e1bc9c818b622373a8c85bd679533cefd (patch) | |
tree | 683b5c10891b4e7704404fcf3de81da08f02a54b /activerecord/lib | |
parent | 9bc75fd007d56d818b8620569410a20aa92c9fc5 (diff) | |
download | rails-7ddc8f2e1bc9c818b622373a8c85bd679533cefd.tar.gz rails-7ddc8f2e1bc9c818b622373a8c85bd679533cefd.tar.bz2 rails-7ddc8f2e1bc9c818b622373a8c85bd679533cefd.zip |
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
Diffstat (limited to 'activerecord/lib')
-rwxr-xr-x | activerecord/lib/active_record/associations.rb | 13 |
1 files changed, 13 insertions, 0 deletions
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}" |