Skip to content
Browse files

Merge pull request #14546 from eileencodes/fix_delete_all_to_not_use_…

…IN_statement

Fix delete all to not produce sql in statement
  • Loading branch information...
2 parents 165d93b + e247f32 commit e9f53f7a7a5c57838654aad9ee1d8b0086b685d7 @tenderlove tenderlove committed
View
2 activerecord/lib/active_record/associations/collection_association.rb
@@ -248,7 +248,7 @@ def delete(*records)
dependent = _options[:dependent] || options[:dependent]
if records.first == :all
- if loaded? || dependent == :destroy
+ if (loaded? || dependent == :destroy) && dependent != :delete_all
delete_or_destroy(load_target, dependent)
else
delete_records(:all, dependent)
View
17 activerecord/test/cases/associations/has_many_associations_test.rb
@@ -22,6 +22,8 @@
require 'models/categorization'
require 'models/minivan'
require 'models/speedometer'
+require 'models/reference'
+require 'models/job'
class HasManyAssociationsTestForReorderWithJoinDependency < ActiveRecord::TestCase
fixtures :authors, :posts, :comments
@@ -39,7 +41,7 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
fixtures :accounts, :categories, :companies, :developers, :projects,
:developers_projects, :topics, :authors, :comments,
:people, :posts, :readers, :taggings, :cars, :essays,
- :categorizations
+ :categorizations, :jobs
def setup
Client.destroyed_client_ids.clear
@@ -107,6 +109,19 @@ def test_do_not_call_callbacks_for_delete_all
assert_equal 0, Bulb.count, "bulbs should have been deleted using :delete_all strategy"
end
+ def test_delete_all_on_association_is_the_same_as_not_loaded
+ author = authors :david
+ author.thinking_posts.create!(:body => "test")
+ author.reload
+ expected_sql = capture_sql { author.thinking_posts.delete_all }
+
+ author.thinking_posts.create!(:body => "test")
+ author.reload
+ author.thinking_posts.inspect
+ loaded_sql = capture_sql { author.thinking_posts.delete_all }
+ assert_equal(expected_sql, loaded_sql)
+ end
+
def test_building_the_associated_object_with_implicit_sti_base_class
firm = DependentFirm.new
company = firm.companies.build
View
6 activerecord/test/cases/test_case.rb
@@ -19,6 +19,12 @@ def assert_date_from_db(expected, actual, message = nil)
end
end
+ def capture_sql
+ SQLCounter.clear_log
+ yield
+ SQLCounter.log_all.dup
+ end
+
def assert_sql(*patterns_to_match)
SQLCounter.clear_log
yield

0 comments on commit e9f53f7

Please sign in to comment.
Something went wrong with that request. Please try again.