aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2011-11-28 09:35:43 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2011-11-28 09:35:43 -0800
commitba0b3eee144000b48ec609b75c18d1cdf07a10f3 (patch)
tree9dc77c8e0abd21f03fa5b6059d2c7a5e5c44a084
parenta0c61c81d7b118b61eb7f385af0d3ba71f95ba93 (diff)
parentcba5a3a367f0f9d3be042c0782716fdfd4930f1c (diff)
downloadrails-ba0b3eee144000b48ec609b75c18d1cdf07a10f3.tar.gz
rails-ba0b3eee144000b48ec609b75c18d1cdf07a10f3.tar.bz2
rails-ba0b3eee144000b48ec609b75c18d1cdf07a10f3.zip
Merge pull request #3768 from janv/master
Test and fix for Issue 3450
-rw-r--r--activerecord/lib/active_record/autosave_association.rb2
-rw-r--r--activerecord/test/cases/autosave_association_test.rb11
2 files changed, 12 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb
index 056170d82a..d709a77fb0 100644
--- a/activerecord/lib/active_record/autosave_association.rb
+++ b/activerecord/lib/active_record/autosave_association.rb
@@ -264,7 +264,7 @@ module ActiveRecord
# turned on for the association.
def validate_single_association(reflection)
association = association_instance_get(reflection.name)
- record = association && association.target
+ record = association && association.reader
association_valid?(reflection, record) if record
end
diff --git a/activerecord/test/cases/autosave_association_test.rb b/activerecord/test/cases/autosave_association_test.rb
index 4ad2cdfc7e..4c3f2bda57 100644
--- a/activerecord/test/cases/autosave_association_test.rb
+++ b/activerecord/test/cases/autosave_association_test.rb
@@ -347,6 +347,17 @@ class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::Test
client.save!
assert_no_queries { assert_equal apple, client.firm }
end
+
+ def test_validation_does_not_validate_stale_association_target
+ valid_developer = Developer.create!(:name => "Dude", :salary => 50_000)
+ invalid_developer = Developer.new()
+
+ auditlog = AuditLog.new(:message => "foo")
+ auditlog.developer = invalid_developer
+ auditlog.developer_id = valid_developer.id
+
+ assert auditlog.valid?
+ end
end
class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCase