【发布时间】:2016-01-17 20:27:43
【问题描述】:
我有类似以下循环的东西,它创建了许多插入:
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(????)
【问题讨论】:
标签: ruby-on-rails ruby postgresql ruby-on-rails-4 arel