class M2MFastInsert::Base

Attributes

id[R]
ids[R]
join_column_name[R]
join_table[R]
options[R]
table_name[R]

Public Class Methods

new(id, join_column_name, table_name, join_table, *args) click to toggle source
# File lib/m2m_fast_insert/base.rb, line 5
def initialize(id, join_column_name, table_name, join_table, *args)
  @options = args[1].present? ? args[1] : {}
  @id = id.to_i
  @ids = args[0].collect(&:to_i)
  @ids.uniq! if options[:unique]
  raise ArgumentError, "Can't have nil ID, perhaps you didn't save the record first?" if id.nil?
  @join_table = join_table
  @join_column_name = join_column_name
  @table_name = table_name
end

Public Instance Methods

fast_insert() click to toggle source
# File lib/m2m_fast_insert/base.rb, line 29
def fast_insert
  ActiveRecord::Base.connection.execute(sql) unless ids.empty?
end
inserts() click to toggle source
# File lib/m2m_fast_insert/base.rb, line 16
def inserts
  @inserts ||= begin inserts = []
                 ids.each do |given_id|
                   inserts << "(#{id}, #{given_id})"
                 end
                 inserts.join ", "
               end
end
sql() click to toggle source
# File lib/m2m_fast_insert/base.rb, line 25
def sql
  "INSERT INTO #{join_table} (`#{table_name}_id`, `#{join_column_name}_id`) VALUES #{inserts}"
end