如何在表壳中使用批量插件

时间:2016-09-20 09:16:31

标签: ruby-on-rails rails-activerecord

如何在Rails中使用数组的批量插入,如下所示:

name_list = [{"id" => 1,"name" => "bob"},{"id" => 2,"name" => "ted"}]

Namelist.import name_list

我不能插入上面数组的值。

3 个答案:

答案 0 :(得分:1)

您可以将哈希数组传递给create

Namelist.create([{id: 1, name: "bob"}, {id: 2, name: "ted"}])

答案 1 :(得分:1)

您可以使用activerecord-import gem在单次插入查询中执行此操作。

name_list = [{"id" => 1,"name" => "bob"},{"id" => 2,"name" => "ted"}]
namelist_objects = []
name_list.each do |n| 
  namelist_objects << Namelist.new(n)
end
Namelist.import(namelist_objects)

其他人的上述答案可以正常工作,但会运行name_list.size次插入查询,这在数组较大时是不可行的。

希望有所帮助!

答案 2 :(得分:0)

我不确定你想要什么,但也许它会帮助你。我想你想为name_lists创建Namelist,不是吗?

name_list = [{"id" => 1,"name" => "bob"},{"id" => 2,"name" => "ted"}]
name_list.map{|k| Namelist.create(k) }