У меня есть что-то вроде следующего цикла, который создает много вставок:Как навальная вставка с Arel?
table = Arel::Table.new(:users)
users.each do |user|
manager = Arel::InsertManager.new(ActiveRecord::Base)
manager.into(table).insert([
[table[:name], user.name],
[table[:created_at], user.created_at],
[table[:updated_at], user.updated_at]
])
# INSERT INTO users (name) VALUES ('a')
@conn.insert(manager.to_sql)
end
Однако, я хотел бы найти способ, чтобы получить только значения, которые будут вставлены. В этом я мог бы сделать одну вставку для всех значений.
PS: обратите внимание, что я не хочу писать строки sql (проблемы безопасности).
table = Arel::Table.new(:users)
inserts = []
users.each do |user|
manager = Arel::InsertManager.new(ActiveRecord::Base)
manager.into(table).insert([
[table[:name], user.name],
[table[:created_at], user.created_at],
[table[:updated_at], user.updated_at]
])
inserts << "(#{??manage values??})"
end
# INSERT INTO users (name) VALUES ('a'), ('b'), ('c')
@conn.insert(????)