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