diff options
author | Emilio Tagua <miloops@gmail.com> | 2010-03-01 12:40:56 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2010-03-01 12:40:56 -0300 |
commit | 52b9eb1d8dea2615a8ff6182278dc53e1cf33c1d (patch) | |
tree | ec7bba6db249867cc7a5f8b92f3e2f7a31fcf695 /lib/arel/engines | |
parent | 5ab0598b091dbe5679f96b1f7a097178c3caaf3b (diff) | |
download | rails-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/engines')
-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) |