代码之家  ›  专栏  ›  技术社区  ›  shaan

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

  •  0
  • shaan  · 技术社区  · 6 年前

    在给定的场景中,下面是hi

     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 大小

    有没有一种方法可以让我在一个查询中用其他更好的方法来完成这项工作呢?

    2 回复  |  直到 6 年前
        1
  •  1
  •   srinij    6 年前

    检查 activerecord-import 宝石,它允许插入到批量。

        2
  •  2
  •   Sandeep Garg    6 年前

    ActiveRecord Create还可以接受insert语句数组,该数组只会构造单个ActiveRecord对象,但它仍然在数据库中执行多个insert语句。请参阅以下代码

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

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