From 6eb3f5e8f5fb41c2a62ceca13ac5d75835a55fb5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Josef=20=C5=A0im=C3=A1nek?= <josef.simanek@gmail.com>
Date: Sat, 16 Mar 2019 02:33:48 +0000
Subject: Raise UnknownAttributeError when unknown column is passed to
 insert_all and friends.

---
 activerecord/lib/active_record/insert_all.rb | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'activerecord/lib')

diff --git a/activerecord/lib/active_record/insert_all.rb b/activerecord/lib/active_record/insert_all.rb
index 5baaea344b..3833cb2fcf 100644
--- a/activerecord/lib/active_record/insert_all.rb
+++ b/activerecord/lib/active_record/insert_all.rb
@@ -92,7 +92,15 @@ module ActiveRecord
 
         def values_list
           columns = connection.schema_cache.columns_hash(model.table_name)
+
+          column_names = columns.keys.to_set
           keys = insert_all.keys.to_set
+          unknown_columns = keys - column_names
+
+          unless unknown_columns.empty?
+            raise UnknownAttributeError.new(model.new, unknown_columns.first)
+          end
+
           types = keys.map { |key| [ key, connection.lookup_cast_type_from_column(columns[key]) ] }.to_h
 
           values_list = insert_all.inserts.map do |attributes|
-- 
cgit v1.2.3