diff options
-rw-r--r-- | lib/arel/engines/sql/engine.rb | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/arel/engines/sql/engine.rb b/lib/arel/engines/sql/engine.rb index 6087a26816..8accf3874c 100644 --- a/lib/arel/engines/sql/engine.rb +++ b/lib/arel/engines/sql/engine.rb @@ -26,13 +26,13 @@ module Arel module CRUD def create(relation) - primary_key_value = nil - if primary_key = relation.primary_key - if primary_key_attribute_and_value = relation.record.detect{|k, v| k.name.to_s == primary_key.to_s} - primary_key_value = primary_key_attribute_and_value[1].value + attribute = [*relation.record].map do |attr, value| + if attr.respond_to?(:name) && !relation.primary_key.blank? && attr.name == relation.primary_key + value end - end - connection.insert(relation.to_sql(false), nil, primary_key, primary_key_value) + end.compact.first + primary_key_value = attribute ? attribute.value : nil + connection.insert(relation.to_sql(false), nil, relation.primary_key, primary_key_value) end def read(relation) |