Class: BulkInsertActiveRecord::Inserters::Base
- Inherits:
-
Object
- Object
- BulkInsertActiveRecord::Inserters::Base
- Defined in:
- lib/inserters/base.rb
Overview
This base implementation works for MySQL and SQLServer
Direct Known Subclasses
Instance Method Summary collapse
- #execute(records, column_names) ⇒ Object
-
#initialize(active_record_class) ⇒ Base
constructor
A new instance of Base.
Constructor Details
#initialize(active_record_class) ⇒ Base
Returns a new instance of Base.
5 6 7 8 |
# File 'lib/inserters/base.rb', line 5 def initialize(active_record_class) @connection = active_record_class.connection @quoted_table_name = active_record_class.quoted_table_name end |
Instance Method Details
#execute(records, column_names) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/inserters/base.rb', line 10 def execute(records, column_names) statement = 'INSERT INTO %{table_name}(%{columns_clause}) VALUES %{values_clause}' @connection.insert(format(statement, table_name: @quoted_table_name, columns_clause: column_names.map do |column_name| @connection.quote_column_name(column_name) end.join(','), values_clause: records.map do |record| value_clause = record.map { |value| @connection.quote(value) }.join(',') "(#{value_clause})" end.join(','))) end |