From a14f06692d4d9b908b57b0fff183d77da643a633 Mon Sep 17 00:00:00 2001 From: KapilSachdev Date: Wed, 9 Sep 2020 00:14:55 +0530 Subject: [PATCH] Revert "Merge pull request #40178 from tgxworld/raise_error_from_delete_all" This reverts commit b8ab1f89fc3a26c83066b052b6262e8df12d1217, reversing changes made to 73ae5655a098ef84bba77b59cde716265aa5fd0b. --- activerecord/lib/active_record/relation.rb | 5 ++--- activerecord/test/cases/relation/delete_all_test.rb | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index e73a91f90c..9d16cd765b 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -11,7 +11,7 @@ class Relation :reverse_order, :distinct, :create_with, :skip_query_cache] CLAUSE_METHODS = [:where, :having, :from] - INVALID_METHODS_FOR_DELETE_ALL = [:distinct, :group, :having, :from] + INVALID_METHODS_FOR_DELETE_ALL = [:distinct, :group, :having] VALUE_METHODS = MULTI_VALUE_METHODS + SINGLE_VALUE_METHODS + CLAUSE_METHODS @@ -577,9 +577,8 @@ def destroy_all def delete_all invalid_methods = INVALID_METHODS_FOR_DELETE_ALL.select do |method| value = @values[method] - [:distinct, :from].include?(method) ? value : value&.any? + method == :distinct ? value : value&.any? end - if invalid_methods.any? raise ActiveRecordError.new("delete_all doesn't support #{invalid_methods.join(', ')}") end diff --git a/activerecord/test/cases/relation/delete_all_test.rb b/activerecord/test/cases/relation/delete_all_test.rb index d05aa6cda5..68ab852952 100644 --- a/activerecord/test/cases/relation/delete_all_test.rb +++ b/activerecord/test/cases/relation/delete_all_test.rb @@ -50,7 +50,6 @@ def test_delete_all_with_unpermitted_relation_raises_error assert_raises(ActiveRecord::ActiveRecordError) { Author.distinct.delete_all } assert_raises(ActiveRecord::ActiveRecordError) { Author.group(:name).delete_all } assert_raises(ActiveRecord::ActiveRecordError) { Author.having("SUM(id) < 3").delete_all } - assert_raises(ActiveRecord::ActiveRecordError) { Author.from("(SELECT * FROM authors) AS authors").delete_all } end def test_delete_all_with_joins_and_where_part_is_hash -- GitLab