aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorKassio Borges <kassioborgesm@gmail.com>2015-11-08 10:57:25 -0200
committerKassio Borges <kassioborgesm@gmail.com>2015-11-08 10:58:39 -0200
commitc8bbe9aefae3fdee1eebc8c3e95f5009f5148034 (patch)
treee4eab9384c95c45aefe223f41355a274f6bb909f /activerecord/test
parent25673f47b607528d12b0f4d1bace30b2c41a97fa (diff)
downloadrails-c8bbe9aefae3fdee1eebc8c3e95f5009f5148034.tar.gz
rails-c8bbe9aefae3fdee1eebc8c3e95f5009f5148034.tar.bz2
rails-c8bbe9aefae3fdee1eebc8c3e95f5009f5148034.zip
Improve support for non Active Record objects on `validates_associated`
Skipping `marked_for_destruction?` when the associated object does not responds to it make easier to validate virtual associations built on top of Active Model objects and/or serialized objects that implement a `valid?` instance method.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/validations/association_validation_test.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/activerecord/test/cases/validations/association_validation_test.rb b/activerecord/test/cases/validations/association_validation_test.rb
index bff5ffa65e..584a3dc0d8 100644
--- a/activerecord/test/cases/validations/association_validation_test.rb
+++ b/activerecord/test/cases/validations/association_validation_test.rb
@@ -45,6 +45,18 @@ class AssociationValidationTest < ActiveRecord::TestCase
assert t.valid?
end
+ def test_validates_associated_without_marked_for_destruction
+ reply = Class.new do
+ def valid?
+ true
+ end
+ end
+ Topic.validates_associated(:replies)
+ t = Topic.new
+ t.define_singleton_method(:replies) { [reply.new] }
+ assert t.valid?
+ end
+
def test_validates_associated_with_custom_message_using_quotes
Reply.validates_associated :topic, :message=> "This string contains 'single' and \"double\" quotes"
Topic.validates_presence_of :content