aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2010-03-01 12:40:56 -0300
committerEmilio Tagua <miloops@gmail.com>2010-03-01 12:40:56 -0300
commit52b9eb1d8dea2615a8ff6182278dc53e1cf33c1d (patch)
treeec7bba6db249867cc7a5f8b92f3e2f7a31fcf695 /lib/arel
parent5ab0598b091dbe5679f96b1f7a097178c3caaf3b (diff)
downloadrails-52b9eb1d8dea2615a8ff6182278dc53e1cf33c1d.tar.gz
rails-52b9eb1d8dea2615a8ff6182278dc53e1cf33c1d.tar.bz2
rails-52b9eb1d8dea2615a8ff6182278dc53e1cf33c1d.zip
Prevent from getting errors when trying to get primary key value.
Diffstat (limited to 'lib/arel')
-rw-r--r--lib/arel/engines/sql/engine.rb12
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)