我们可以在Ruby on Rails ActiveRecord的一个查询中插入多行吗?

时间:2018-06-27 10:54:45

标签: ruby-on-rails activerecord

在特定情况下,您好

 some_model_id = [1, 2, 3, 4]
 some_model_id.each do |some_id|
   SomeOtherModel.create(some_column: some_id)
 end

根据insert的大小,此处n查询将运行some_model_id

有没有一种方法可以使我在一次查询中用其他更好的方法做到这一点。

3 个答案:

答案 0 :(得分:2)

ActiveRecord创建也可以采用insert语句数组,该语句仅制定单个ActiveRecord对象,但仍在数据库中执行多个insert语句。请参考以下代码

SomeOtherModel.create([{some_column: some_id}, {some_column: some_id}, {some_column:some_id}])

要一次插入多个记录,最好使用带有多个值的原始SQL插入命令。

答案 1 :(得分:1)

选中activerecord-import宝石,它可以批量插入。

答案 2 :(得分:1)

insert_all(超过6条)

Rails 6开始,ActiveRecord支持使用一个开箱即用的SQL查询插入多行。

请看看insert_all