From c03d4bb8e4acac95961a1a9eb9578fa33a47da66 Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Mon, 1 Mar 2010 13:17:36 -0300 Subject: Refactor thethe wayy to obtain primary key value. --- lib/arel/engines/sql/engine.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/arel/engines/sql/engine.rb b/lib/arel/engines/sql/engine.rb index 8accf3874c..c0e5a39e97 100644 --- a/lib/arel/engines/sql/engine.rb +++ b/lib/arel/engines/sql/engine.rb @@ -26,12 +26,13 @@ module Arel module CRUD def create(relation) - attribute = [*relation.record].map do |attr, value| - if attr.respond_to?(:name) && !relation.primary_key.blank? && attr.name == relation.primary_key - value - end - end.compact.first - primary_key_value = attribute ? attribute.value : nil + primary_key_value = if relation.primary_key.blank? + nil + elsif relation.record.is_a?(Hash) + attribute = relation.record.detect { |attr, _| attr.name.to_s == relation.primary_key.to_s } + attribute && attribute.last.value + end + connection.insert(relation.to_sql(false), nil, relation.primary_key, primary_key_value) end -- cgit v1.2.3