2013-03-10 113 views
0

我有一组返回以下散列单选按钮:插入多个记录一次

{"1"=>"1", "3"=>"2"} 

的键表示的event_id和值表示regoption_id。我需要将它们一次全部插入到订阅表中。 我试过如下:

params[:children].each do |child|  
    Subscription.create({:event_id => child[0], :regoption_id => child[1]}).save 
end 

该结束了吧,拯救一个无线电集团,不是所有的哈希值。任何想法如何做到这一点?

+0

仅供参考,'create'方法执行它自己的'save'。 – 2013-03-10 22:56:22

+0

好的,谢谢!问题仍然存在;) – 2013-03-10 22:57:14

回答

1

有一个叫activerecord-import宝石,这将有效地插入多条记录。它适用于许多流行的数据库后端,并且只会对大多数数据库做正确的事情。这正是你想要的:它接受一个对象实例的数组,或者一个哈希值的数组,并将它们插入到一个表中。

下面是一个使用示例直接从创业板的文档:

books = [] 
10.times do |i| 
    books << Book.new(:name => "book #{i}") 
end 
Book.import books 
+0

我试过这个,但它没有与我的设置。它仍然只插入最后一个记录 – 2013-03-11 10:49:05

+0

我决定去'原始的SQL'解决方案,它工作正常。显然没有验证/回调可能,但在这种情况下没有问题。 – 2013-04-11 14:26:46