aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2010-03-01 13:17:36 -0300
committerEmilio Tagua <miloops@gmail.com>2010-03-01 13:17:36 -0300
commitc03d4bb8e4acac95961a1a9eb9578fa33a47da66 (patch)
treea7db85677edec1f6940ac5aa0c585db105fdcc56 /lib/arel
parent1994d3e61dd841ad1367922c5c608c9f5f277161 (diff)
downloadrails-c03d4bb8e4acac95961a1a9eb9578fa33a47da66.tar.gz
rails-c03d4bb8e4acac95961a1a9eb9578fa33a47da66.tar.bz2
rails-c03d4bb8e4acac95961a1a9eb9578fa33a47da66.zip
Refactor thethe wayy to obtain primary key value.
Diffstat (limited to 'lib/arel')
-rw-r--r--lib/arel/engines/sql/engine.rb13
1 files changed, 7 insertions, 6 deletions
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