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

質問編集履歴

1

質問内容の追記

2019/10/13 07:57

投稿

ryota1017stars
ryota1017stars

スコア21

title CHANGED
File without changes
body CHANGED
@@ -197,4 +197,40 @@
197
197
  end
198
198
  end
199
199
 
200
- ```
200
+ ```
201
+ 加筆
202
+ > ユーザのカートを空にするmethodを仮に user.cart.clear としたときに、それをどのcontrllerのどのアクションのどの位置に入れるか
203
+
204
+ カートの中身を空にするタイミングは、orderが作成(注文が確定)されたタイミングで行いたいと考えております。
205
+ ```ruby
206
+ class OrdersController < ApplicationController
207
+
208
+ def create
209
+ @order = Order.new(order_params)
210
+ @cart_items = CartItem.where(cart_id:current_cart.id)
211
+ redirect_to current_cart
212
+
213
+ user.cart.clear #カートの中身を空にする
214
+
215
+ end
216
+
217
+ end
218
+
219
+ ```
220
+ ---
221
+
222
+ > 履歴一覧を出すにあたって、何がわからないのでしょうか
223
+
224
+ 現状ではカートの中に入っている商品はcart_itemで管理しています。cart_itemにはカートのid(cart_id)、商品のid(product_id)、商品の個数(quantity)の情報を保存しています。
225
+
226
+
227
+ orderでは1つのidに対して1つの**注文**を管理したいのですが、1回の注文で複数の商品を購入する場合もあるため、
228
+ order1つに対して複数のproduct_idを紐付ける必要がありそうですが、prpduct_idの個数が可変なため、それはできないと思い、他に方法はないか、というのが現時点での疑問になります。
229
+
230
+ 例えばAさんというユーザー(user_id=2とする)はcart_id=3のカートと紐付いていて、現在カートに3つの商品が入っていたとすると、cart_item(CartItem.where(cart_id:3))は以下のようになります。
231
+
232
+ ![イメージ説明](4ec4030f7355ae38528ff547ac184d14.png)
233
+
234
+ この状態で注文をした場合、orderを以下のようなイメージで作成できればと思っております(cart_idがuser_idになっても可)
235
+
236
+ ![イメージ説明](c85d7841d7dc5d625f71db47f5fee266.png)