Module: ActiveRecord::Persistence::ClassMethods

Defined in:
lib/active_record/connection_adapters/ibm_db_adapter.rb

Instance Method Summary collapse

Instance Method Details

#_insert_record(connection, values, returning) ⇒ Object

:nodoc:



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/active_record/connection_adapters/ibm_db_adapter.rb', line 121

def _insert_record(connection, values, returning) # :nodoc:
  primary_key = self.primary_key
  primary_key_value = nil

  if prefetch_primary_key? && primary_key
    values[primary_key] ||= begin
      primary_key_value = next_sequence_value
      _default_attributes[primary_key].with_cast_value(primary_key_value)
    end
  end

  im = Arel::InsertManager.new(arel_table)

  with_connection do |c|
    if values.empty?
      im.insert(connection.empty_insert_statement_value(primary_key, arel_table[name].relation.name))
    else
      im.insert(values.transform_keys { |name| arel_table[name] })
    end

    connection.insert(
      im, "#{self} Create", primary_key || false, primary_key_value,
      returning: returning
    )
  end
end