diff options
author | Joshua Peek <josh@joshpeek.com> | 2011-03-30 20:56:05 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2011-03-30 20:56:05 -0500 |
commit | 5df076ad0965dc684afff8a019fd9f92a53ada76 (patch) | |
tree | b2272d3d7f0ed6713d888390a13b130c65aec6f3 /activerecord/lib/active_record/relation.rb | |
parent | ac9443ed71bf0b40cf5b321e8e1b77b98abd9b5e (diff) | |
parent | 9772de8d459960cc114c5b214343b7ce08fea21c (diff) | |
download | rails-5df076ad0965dc684afff8a019fd9f92a53ada76.tar.gz rails-5df076ad0965dc684afff8a019fd9f92a53ada76.tar.bz2 rails-5df076ad0965dc684afff8a019fd9f92a53ada76.zip |
Merge branch 'master' into sprockets
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 371403f510..8e545f9cad 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -30,15 +30,26 @@ module ActiveRecord end def insert(values) - im = arel.compile_insert values - im.into @table - primary_key_value = nil if primary_key && Hash === values primary_key_value = values[values.keys.find { |k| k.name == primary_key }] + + if !primary_key_value && connection.prefetch_primary_key?(klass.table_name) + primary_key_value = connection.next_sequence_value(klass.sequence_name) + values[klass.arel_table[klass.primary_key]] = primary_key_value + end + end + + im = arel.create_insert + im.into @table + + if values.empty? # empty insert + im.values = im.create_values [connection.null_insert_value], [] + else + im.insert values end @klass.connection.insert( |