diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2019-03-06 16:19:53 +0100 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2019-03-06 16:19:53 +0100 |
commit | ba795c9e4acc3954f52ad9f4d1059964a51cdce0 (patch) | |
tree | 6007760426a263ad44731b97c7904e0384f2f4c4 | |
parent | fd18b98dd90d738af265cf5b8f0d66ca11010132 (diff) | |
download | rails-ba795c9e4acc3954f52ad9f4d1059964a51cdce0.tar.gz rails-ba795c9e4acc3954f52ad9f4d1059964a51cdce0.tar.bz2 rails-ba795c9e4acc3954f52ad9f4d1059964a51cdce0.zip |
Handle blank inserts like update_all; raise upfront.
-rw-r--r-- | activerecord/lib/active_record/insert_all.rb | 10 | ||||
-rw-r--r-- | activerecord/test/cases/insert_all_test.rb | 2 |
2 files changed, 5 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/insert_all.rb b/activerecord/lib/active_record/insert_all.rb index ca5ce11d79..6d14ff70b6 100644 --- a/activerecord/lib/active_record/insert_all.rb +++ b/activerecord/lib/active_record/insert_all.rb @@ -5,6 +5,8 @@ module ActiveRecord attr_reader :model, :connection, :inserts, :on_duplicate, :returning, :unique_by def initialize(model, inserts, on_duplicate:, returning: nil, unique_by: nil) + raise ArgumentError, "Empty list of attributes passed" if inserts.blank? + @model, @connection, @inserts, @on_duplicate, @returning, @unique_by = model, model.connection, inserts, on_duplicate, returning, unique_by @returning = (connection.supports_insert_returning? ? primary_keys : false) if @returning.nil? @returning = false if @returning == [] @@ -14,15 +16,11 @@ module ActiveRecord end def execute - if inserts.present? - connection.exec_query to_sql, "Bulk Insert" - else - ActiveRecord::Result.new([], []) - end + connection.exec_query to_sql, "Bulk Insert" end def keys - inserts.present? ? inserts.first.keys.map(&:to_s) : [] + inserts.first.keys.map(&:to_s) end def updatable_columns diff --git a/activerecord/test/cases/insert_all_test.rb b/activerecord/test/cases/insert_all_test.rb index e0d79d2fab..1c0a4e5f26 100644 --- a/activerecord/test/cases/insert_all_test.rb +++ b/activerecord/test/cases/insert_all_test.rb @@ -34,7 +34,7 @@ class PersistenceTest < ActiveRecord::TestCase end def test_insert_all_should_handle_empty_arrays - assert_no_difference "Book.count" do + assert_raise ArgumentError do Book.insert_all! [] end end |