80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/activerecord_bulkoperation/group_operations.rb', line 80
def insert_group(group, _options = {})
group.reject(&:new_record?)
sql = "INSERT INTO #{table_name} " \
'( ' \
"#{columns.map(&:name).join(', ')} " \
') VALUES ( ' \
"#{(1..columns.count).map { |i| ":#{i}" }.join(', ')} " \
')'
types = []
columns.each do |c|
type = to_type_symbol(c)
types << type
end
values = []
group.each do |record|
row = []
columns.each do |c|
v = record.read_attribute(c.name)
row << v
end
values << row
end
result = execute_batch_update(sql, types, values)
group.each(&:unset_new_record)
result
end
|