質問編集履歴

1

質問内容の追記

2019/10/13 07:57

投稿

ryota1017stars
ryota1017stars

スコア21

test CHANGED
File without changes
test CHANGED
@@ -397,3 +397,75 @@
397
397
 
398
398
 
399
399
  ```
400
+
401
+ 加筆
402
+
403
+ > ユーザのカートを空にするmethodを仮に user.cart.clear としたときに、それをどのcontrllerのどのアクションのどの位置に入れるか
404
+
405
+
406
+
407
+ カートの中身を空にするタイミングは、orderが作成(注文が確定)されたタイミングで行いたいと考えております。
408
+
409
+ ```ruby
410
+
411
+ class OrdersController < ApplicationController
412
+
413
+
414
+
415
+ def create
416
+
417
+ @order = Order.new(order_params)
418
+
419
+ @cart_items = CartItem.where(cart_id:current_cart.id)
420
+
421
+ redirect_to current_cart
422
+
423
+
424
+
425
+ user.cart.clear #カートの中身を空にする
426
+
427
+
428
+
429
+ end
430
+
431
+
432
+
433
+ end
434
+
435
+
436
+
437
+ ```
438
+
439
+ ---
440
+
441
+
442
+
443
+ > 履歴一覧を出すにあたって、何がわからないのでしょうか
444
+
445
+
446
+
447
+ 現状ではカートの中に入っている商品はcart_itemで管理しています。cart_itemにはカートのid(cart_id)、商品のid(product_id)、商品の個数(quantity)の情報を保存しています。
448
+
449
+
450
+
451
+
452
+
453
+ orderでは1つのidに対して1つの**注文**を管理したいのですが、1回の注文で複数の商品を購入する場合もあるため、
454
+
455
+ order1つに対して複数のproduct_idを紐付ける必要がありそうですが、prpduct_idの個数が可変なため、それはできないと思い、他に方法はないか、というのが現時点での疑問になります。
456
+
457
+
458
+
459
+ 例えばAさんというユーザー(user_id=2とする)はcart_id=3のカートと紐付いていて、現在カートに3つの商品が入っていたとすると、cart_item(CartItem.where(cart_id:3))は以下のようになります。
460
+
461
+
462
+
463
+ ![イメージ説明](4ec4030f7355ae38528ff547ac184d14.png)
464
+
465
+
466
+
467
+ この状態で注文をした場合、orderを以下のようなイメージで作成できればと思っております(cart_idがuser_idになっても可)
468
+
469
+
470
+
471
+ ![イメージ説明](c85d7841d7dc5d625f71db47f5fee266.png)