2017-02-10 9 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何かが動作しない理由を尋ねたとき、あなたはどのように動作しないかについての情報も提供する必要があります。この場合と同様に、最後の製品は1つだけ作成されます。 – 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行を移動してみてください。

関連する問題