aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/autosave_association.rb2
-rwxr-xr-xactiverecord/lib/active_record/base.rb5
2 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb
index c1bc8423a9..ebd47ec634 100644
--- a/activerecord/lib/active_record/autosave_association.rb
+++ b/activerecord/lib/active_record/autosave_association.rb
@@ -245,6 +245,8 @@ module ActiveRecord
# the parent, <tt>self</tt>, if it wasn't. Skips any <tt>:autosave</tt>
# enabled records if they're marked_for_destruction?.
def association_valid?(reflection, association)
+ return true if association.destroyed?
+
unless valid = association.valid?
if reflection.options[:autosave]
unless association.marked_for_destruction?
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index afa4185c60..2f6e3e8ffd 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -2813,6 +2813,11 @@ module ActiveRecord #:nodoc:
@attributes.frozen?
end
+ # Returns +true+ if the record has been destroyed.
+ def destroyed?
+ @destroyed
+ end
+
# Returns duplicated record with unfreezed attributes.
def dup
obj = super