diff options
author | eileencodes <eileencodes@gmail.com> | 2015-01-10 16:46:57 -0500 |
---|---|---|
committer | eileencodes <eileencodes@gmail.com> | 2015-02-01 16:03:49 -0800 |
commit | 27aa4dda7d89ce7332e6d1f3266c3a0cf1c3fb9e (patch) | |
tree | f91555ce55e52110d6fc7df6401aa13e227137ee /activemodel | |
parent | 226cd8a094c81edb72143173e4d0c88a2eb01d5f (diff) | |
download | rails-27aa4dda7d89ce7332e6d1f3266c3a0cf1c3fb9e.tar.gz rails-27aa4dda7d89ce7332e6d1f3266c3a0cf1c3fb9e.tar.bz2 rails-27aa4dda7d89ce7332e6d1f3266c3a0cf1c3fb9e.zip |
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`
Diffstat (limited to 'activemodel')
-rw-r--r-- | activemodel/lib/active_model/validator.rb | 4 |
1 files changed, 4 insertions, 0 deletions
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 |