Method: Arel::Visitors::ToSql#visit_ArelExtensions_InsertManager_BulkValues

Defined in:
lib/arel_extensions/visitors/to_sql.rb,
lib/arel_extensions/visitors/to_sql.rb

#visit_ArelExtensions_InsertManager_BulkValues(o, collector) ⇒ Object



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
# File 'lib/arel_extensions/visitors/to_sql.rb', line 466

def visit_ArelExtensions_InsertManager_BulkValues o, collector
  collector << 'VALUES '
  row_nb = o.left.length
  o.left.each_with_index do |row, idx|
    collector << '('
    len = row.length - 1
    row.zip(o.cols).each_with_index { |(value, attr), i|
      case value
      when Arel::Nodes::SqlLiteral, Arel::Nodes::BindParam
        collector = visit value, collector
      else
        collector << quote(value, attr && column_for(attr)).to_s
      end
      collector << COMMA unless i == len
    }
    collector << (idx == row_nb - 1 ? ')' : '), ')
  end
  collector
end