Sha256: c1d60dc2ba671d3e9d890dc421a747922a3e769811f4488b0b325dd5092b3187
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
module ActiveRecord module ConnectionAdapters module DatabaseStatements def insert(arel, name = nil, pk = nil, id_value = nil, sequence_name = nil, binds = []) sql, binds = to_sql_and_binds(arel, binds) value = exec_insert(sql, name, binds, pk, sequence_name) return id_value if id_value if pk.is_a?(Array) && !value.empty? # This is a CPK model and the query result is not empty. Thus we can figure out the new ids for each # auto incremented field pk.map {|key| value.first[key]} elsif pk.is_a?(Array) # This is CPK, but we don't know what autoincremented fields were updated. result = Array.new(pk.size) # Is there an autoincrementing field? auto_key = pk.find do |key| attribute = arel.ast.relation[key] column = column_for_attribute(attribute) if column.respond_to?(:auto_increment?) column.auto_increment? end end if auto_key result[pk.index(auto_key)] = last_inserted_id(value) end result else last_inserted_id(value) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
composite_primary_keys-12.0.9 | lib/composite_primary_keys/connection_adapters/abstract/database_statements.rb |