aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/autosave_association.rb
diff options
context:
space:
mode:
authorJames Coleman <jtc331@gmail.com>2012-03-02 15:37:48 -0500
committerJames Coleman <jtc331@gmail.com>2012-03-02 16:31:18 -0500
commit217a8b01b1349d50fc9c331e9411034289c640ab (patch)
treecfe228d5ee1970a31f47263b07a02a041a47cfdf /activerecord/lib/active_record/autosave_association.rb
parent5497432d71b88ae4b99c6c59199eba95d81f28f6 (diff)
downloadrails-217a8b01b1349d50fc9c331e9411034289c640ab.tar.gz
rails-217a8b01b1349d50fc9c331e9411034289c640ab.tar.bz2
rails-217a8b01b1349d50fc9c331e9411034289c640ab.zip
Unset association when existing record is destroyed.
To avoid foreign key errors (and invalid data) in the database, when a belongs_to association is destroyed, it should also be nil'd out on the parent object.
Diffstat (limited to 'activerecord/lib/active_record/autosave_association.rb')
-rw-r--r--activerecord/lib/active_record/autosave_association.rb1
1 files changed, 1 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/autosave_association.rb b/activerecord/lib/active_record/autosave_association.rb
index d468663084..0468a73c7d 100644
--- a/activerecord/lib/active_record/autosave_association.rb
+++ b/activerecord/lib/active_record/autosave_association.rb
@@ -402,6 +402,7 @@ module ActiveRecord
autosave = reflection.options[:autosave]
if autosave && record.marked_for_destruction?
+ self[reflection.foreign_key] = nil
record.destroy
elsif autosave != false
saved = record.save(:validate => !autosave) if record.new_record? || (autosave && record.changed_for_autosave?)