Method: ActiveRecord::InsertAll#initialize
- Defined in:
- activerecord/lib/active_record/insert_all.rb
#initialize(relation, connection, inserts, on_duplicate:, update_only: nil, returning: nil, unique_by: nil, record_timestamps: nil) ⇒ InsertAll
Returns a new instance of InsertAll.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'activerecord/lib/active_record/insert_all.rb', line 18 def initialize(relation, connection, inserts, on_duplicate:, update_only: nil, returning: nil, unique_by: nil, record_timestamps: nil) @relation = relation @model, @connection, @inserts = relation.model, connection, inserts.map(&:stringify_keys) @on_duplicate, @update_only, @returning, @unique_by = on_duplicate, update_only, returning, unique_by @record_timestamps = .nil? ? model. : disallow_raw_sql!(on_duplicate) disallow_raw_sql!(returning) if @inserts.empty? @keys = [] else resolve_sti resolve_attribute_aliases @keys = @inserts.first.keys end @scope_attributes = relation.scope_for_create.except(@model.inheritance_column) @keys |= @scope_attributes.keys @keys = @keys.to_set @returning = (connection.supports_insert_returning? ? primary_keys : false) if @returning.nil? @returning = false if @returning == [] @unique_by = find_unique_index_for(@unique_by) configure_on_duplicate_update_logic end |