teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

内容の修正

2017/03/07 10:11

投稿

ken0625
ken0625

スコア40

title CHANGED
File without changes
body CHANGED
@@ -39,13 +39,13 @@
39
39
 
40
40
 
41
41
  追記
42
- Userモデルは
42
+ Userモデルははusernameカラムを持ち
43
43
  ```ここに言語を入力
44
44
  has_many :user_product_category
45
45
  has_many :product_category through: :user_product_category
46
46
  ```
47
47
 
48
- user_product_categoryはusernameカラムを持ち
48
+ user_product_categoryは
49
49
  ```ここに言語を入力
50
50
  belongs_to :users
51
51
  belongs_to :product_category

1

詳細説明を追記

2017/03/07 10:11

投稿

ken0625
ken0625

スコア40

title CHANGED
File without changes
body CHANGED
@@ -35,4 +35,85 @@
35
35
  でユーザーごとsaveすればいいとも書いてあったのですが、これだとpriceカラムをどのように入れればいいのかわからないというのがありまして・・・
36
36
 
37
37
 
38
- 何解決策はないか教えて下さい。お願いします。
38
+ 何解決策はないか教えて下さい。お願いします。
39
+
40
+
41
+ 追記
42
+ Userモデルは
43
+ ```ここに言語を入力
44
+ has_many :user_product_category
45
+ has_many :product_category through: :user_product_category
46
+ ```
47
+
48
+ user_product_categoryはusernameカラムを持ち
49
+ ```ここに言語を入力
50
+ belongs_to :users
51
+ belongs_to :product_category
52
+ ```
53
+ でカラムとしては
54
+ ```ここに言語を入力
55
+ user_id, :integer
56
+ product_category_id, :integer
57
+ price, :integer
58
+ ```
59
+
60
+ product_categoryはnameカラムをもっていて
61
+ ```ここに言語を入力
62
+ has_many :user_product_category
63
+ has_many :users through: :user_product_category
64
+ ```
65
+ を持っている状態です
66
+
67
+ createメソッドについてやりたいことは
68
+
69
+ 1・まず、ProductCategories.allで手に入る全製品カテゴリ名をチェックボックスで表示
70
+
71
+ 2・checkboxの横に数字を入れるテキストフィールドがありpriceを入力する
72
+
73
+ 3・更新を押すとuser_product_categoryコントローラにparamsが飛んで
74
+ checkboxがついてる製品カテゴリの中間テーブルを生成。
75
+ checkboxがあったが外れたものについては削除。
76
+ さらにpriceフィールドのバリデーションをする
77
+
78
+ 例えば
79
+ user_id=1のユーザーAがおり
80
+
81
+ 製品カテゴリ1(id=1)
82
+ 製品カテゴリ2(id=2)
83
+ 製品カテゴリ3(id=3)
84
+ があるとして
85
+
86
+ ユーザーAは最初に製品カテゴリ1にチェックし、1000円と入力する
87
+
88
+ user_product_categoryテーブルで
89
+
90
+ id=1
91
+ user_id=1
92
+ product_categories_id=1
93
+ price=1000
94
+
95
+ というレコードが生成される
96
+
97
+ 次にユーザーAは製品カテゴリ1のチェックを外し、製品カテゴリ2と製品カテゴリ3のチェックを付け、両方共にprice=1200を入力し更新ボタンを押す
98
+
99
+ user_product_categoryテーブルで
100
+
101
+ id=1のレコードはチェックが外れたので削除
102
+
103
+ id=2
104
+ user_id=1
105
+ product_categories_id=2
106
+ price=1200
107
+
108
+ id=3
109
+ user_id=1
110
+ product_categories_id=3
111
+ price=1200
112
+
113
+ というレコードが生成される
114
+
115
+
116
+ こんな感じにしたいです。
117
+
118
+ ただこの時strong parameterはどのように書くのかとかどうやって一括でpriceフィールドのバリデーションするかとか全く思いつきませんでした。
119
+ いい方法があったら教えて頂きたいです。