Railsで多対多モデルの中間テーブルを一括登録・編集したい
railsで
userある決まった商品のなかからどの商品を扱うかを決めて、その商品に値段をつけるとします。
モデルは
userモデル・user_product_categoryモデル・product_categoryモデル
という3つのモデルが有り、user_product_categoryモデルはpriceというカラムを持っています。
そしてuser_product_categoryコントローラのcreateではproduct_categoryモデルの一覧があり、そこにチェックボックスをつけて値段を入れるとユーザープロフィールページに表示されるようにしたいです。
条件としては
1・どの商品を取り扱うか、取り扱わないかをユーザープロフィール編集ページではない1ページで更新したい。(中間テーブルのみを一括更新したい。)
2・値段もそのページで変更可能にしたい。
この時どのようにformを作ったりコントローラを書けばよいでしょうか。
調べて、
<% ProductCategory.all.each do |product_category| %>
<%= check_box_tag "user[product_category_ids][]", product_category.ids, f.object.product_categories.include?(product_category) %>
とやることでチェックボックスがついたものだけparamsに入れられるのはわかってきたのですが、これだと複数一括で登録する場合バリデーションが一括出できない気がして・・・
また、ユーザーモデルとひも付けて
def user_params
params.require(:user).permit(:name,{product_category: [] })
end
でユーザーごとsaveすればいいとも書いてあったのですが、これだとpriceカラムをどのように入れればいいのかわからないというのがありまして・・・
何解決策はないか教えて下さい。お願いします。