2013-03-10 111 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