2017-02-10 59 views
1

我想編寫代碼,它重複的次數與數組一樣多,然後將數據存儲到數據庫。我認爲這樣做很好,但沒有。 有什麼問題嗎?根據數組元素的數量生成多條記錄

謝謝。

def create 
    product = Product.new 
    product_params['type'].each do |t| 
    product.name = product_params['name'] 
    product.about = product_params['about'] 
    product.type = t 
    product.save  
    end 
end 

params.require(:product).permit(:name,:about, type: []) 
+0

FYI詢問時爲什麼有些東西不工作,你還應提供有關如何不起作用的信息。就像在這種情況下 - 只創建一個/最後一個產品。 – ndn

+0

如果產品失敗,product.errors將顯示錯誤。 – Sooraj

回答

3

產品實例都需要在每次迭代進行初始化,這樣每次你會在數據庫中創建一個新的記錄,而不是更新現有的一個:

def create 
    product_params['type'].each do |t| 
    Product.create(
     name: product_params['name'], 
     about: product_params['about'], 
     type: t 
    ) 
    end 
end 
+0

它的工作原理!非常感謝! – johnny

+0

@johnny您歡迎。如果我的回答確實有幫助,請點擊它旁邊的綠色複選標記將其標記爲已接受 –

+1

我檢查了它。我是初學者,我不明白。感謝您的幫助! – johnny

2

您正在多次保存相同的對象。嘗試在each循環內移動product = Product.new行。