method
insert_record
v3.0.9 -
Show latest stable
- Class:
ActiveRecord::Associations::HasAndBelongsToManyAssociation
insert_record(record, force = true, validate = true)protected
No documentation available.
# File activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb, line 45
def insert_record(record, force = true, validate = true)
if record.new_record?
if force
record.save!
else
return false unless record.save(:validate => validate)
end
end
if @reflection.options[:insert_sql]
@owner.connection.insert(interpolate_and_sanitize_sql(@reflection.options[:insert_sql], record))
else
relation = Arel::Table.new(@reflection.options[:join_table])
timestamps = record_timestamp_columns(record)
timezone = record.send(:current_time_from_proper_timezone) if timestamps.any?
attributes = Hash[columns.map do |column|
name = column.name
value = case name.to_s
when @reflection.primary_key_name.to_s
@owner.id
when @reflection.association_foreign_key.to_s
record.id
when *timestamps
timezone
else
@owner.send(:quote_value, record[name], column) if record.has_attribute?(name)
end
[relation[name], value] unless value.nil?
end]
relation.insert(attributes)
end
return true
end