diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2005-09-28 03:52:57 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2005-09-28 03:52:57 +0000 |
commit | efaf2af07c4238e911899988871e575d8ef5805b (patch) | |
tree | a70ca8cfb227cb6aa47ac68fea84641fc4bab28d /activerecord/lib/active_record/associations | |
parent | 1e87d6e887639650e23db5fbba0ccdf0536f289c (diff) | |
download | rails-efaf2af07c4238e911899988871e575d8ef5805b.tar.gz rails-efaf2af07c4238e911899988871e575d8ef5805b.tar.bz2 rails-efaf2af07c4238e911899988871e575d8ef5805b.zip |
r3653@asus: jeremy | 2005-09-28 00:23:49 -0700
Ticket 2221 - model.association.clear should destroy associated objects if :dependent => true instead of nullifying their foreign keys
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2384 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record/associations')
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_association.rb | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb index f9ca655560..2c881290aa 100644 --- a/activerecord/lib/active_record/associations/has_many_association.rb +++ b/activerecord/lib/active_record/associations/has_many_association.rb @@ -87,7 +87,13 @@ module ActiveRecord # Removes all records from this association. Returns +self+ so # method calls may be chained. def clear - @association_class.update_all("#{@association_class_primary_key_name} = NULL", "#{@association_class_primary_key_name} = #{@owner.quoted_id}") + if @options[:dependent] + each { |associate| associate.destroy } + elsif @options[:exclusively_dependent] + @association_class.delete_all("#{@association_class_primary_key_name} = #{@owner.quoted_id}") + else + @association_class.update_all("#{@association_class_primary_key_name} = NULL", "#{@association_class_primary_key_name} = #{@owner.quoted_id}") + end @target = [] self end |