diff options
author | Jon Leighton <j@jonathanleighton.com> | 2012-05-18 21:11:34 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2012-05-18 21:11:47 +0100 |
commit | 855fabca669f1a57c70bfa7bfc396495018e4a5c (patch) | |
tree | e0262c332a74e170999e76581ec8ff383d8aba63 | |
parent | b98d1e21635d8776de8893cc09bd86c71f6c78f0 (diff) | |
download | rails-855fabca669f1a57c70bfa7bfc396495018e4a5c.tar.gz rails-855fabca669f1a57c70bfa7bfc396495018e4a5c.tar.bz2 rails-855fabca669f1a57c70bfa7bfc396495018e4a5c.zip |
fix #delete_all with habtm with :delete_sql
-rw-r--r-- | activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb | 1 | ||||
-rw-r--r-- | activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb index e8ae3e51b9..1048c0b12e 100644 --- a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +++ b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb @@ -44,6 +44,7 @@ module ActiveRecord def delete_records(records, method) if sql = options[:delete_sql] + records = load_target if records == :all records.each { |record| owner.connection.delete(interpolate(sql, record)) } else relation = join_table diff --git a/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb b/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb index 510411ecb2..bacab8d2f2 100644 --- a/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb @@ -379,6 +379,12 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase assert_equal 0, active_record.developers_by_sql(true).size end + def test_deleting_all_with_sql + project = Project.find(1) + project.developers_by_sql.delete_all + assert_equal 0, project.developers_by_sql.size + end + def test_deleting_all david = Developer.find(1) david.projects.reload |