From 27aa4dda7d89ce7332e6d1f3266c3a0cf1c3fb9e Mon Sep 17 00:00:00 2001 From: eileencodes Date: Sat, 10 Jan 2015 16:46:57 -0500 Subject: Fix validations on child record when record parent has validate: false Fixes #17621. This 5 year old (or older) issue causes validations to fire when a parent record has `validate: false` option and a child record is saved. It's not the responsibility of the model to validate an associated object unless the object was created or modified by the parent. Clean up tests related to validations `assert_nothing_raised` is not benefiting us in these tests Corrected spelling of "respects" It's better to use `assert_not_operator` over `assert !r.valid` --- activemodel/lib/active_model/validator.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'activemodel') diff --git a/activemodel/lib/active_model/validator.rb b/activemodel/lib/active_model/validator.rb index ac32750946..b98585912e 100644 --- a/activemodel/lib/active_model/validator.rb +++ b/activemodel/lib/active_model/validator.rb @@ -163,6 +163,10 @@ module ActiveModel # +ArgumentError+ when invalid options are supplied. def check_validity! end + + def should_validate?(record) # :nodoc: + !record.persisted? || record.changed? || record.marked_for_destruction? + end end # +BlockValidator+ is a special +EachValidator+ which receives a block on initialization -- cgit v1.2.3