From c03d4bb8e4acac95961a1a9eb9578fa33a47da66 Mon Sep 17 00:00:00 2001
From: Emilio Tagua <miloops@gmail.com>
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/arel/engines')

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