aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2015-07-20 09:00:00 -0600
committerSean Griffin <sean@thoughtbot.com>2015-07-20 09:00:00 -0600
commitc0ef95a1c6db3095c4b5f80f8044fbbbdfebeff1 (patch)
treeaa9fc8ebdb6f6dd23cd34a702021825c42652ba4 /activerecord/lib/active_record
parent9bd6e39b0cc65a3e534b55ab3239374239b19927 (diff)
downloadrails-c0ef95a1c6db3095c4b5f80f8044fbbbdfebeff1.tar.gz
rails-c0ef95a1c6db3095c4b5f80f8044fbbbdfebeff1.tar.bz2
rails-c0ef95a1c6db3095c4b5f80f8044fbbbdfebeff1.zip
Correctly ignore `mark_for_destruction` without `autosave`
As per the docs, `mark_for_destruction` should do nothing if `autosave` is not set to true. We normally persist associations on a record no matter what if the record is a new record, but we were always skipping records which were `marked_for_destruction?`. Fixes #20882
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/autosave_association.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb
index 5f38bd51f6..dbb0e2fab2 100644
--- a/activerecord/lib/active_record/autosave_association.rb
+++ b/activerecord/lib/active_record/autosave_association.rb
@@ -325,7 +325,7 @@ module ActiveRecord
# the parent, <tt>self</tt>, if it wasn't. Skips any <tt>:autosave</tt>
# enabled records if they're marked_for_destruction? or destroyed.
def association_valid?(reflection, record)
- return true if record.destroyed? || record.marked_for_destruction?
+ return true if record.destroyed? || (reflection.options[:autosave] && record.marked_for_destruction?)
validation_context = self.validation_context unless [:create, :update].include?(self.validation_context)
unless valid = record.valid?(validation_context)