🙄
ステータスを連動させたい
今回やりたいこと
- 注文ステータスが入金確認になったら制作ステータスが制作待ちに自動更新
- 注文商品の制作ステータスが1つでも制作中になったら注文ステータスを制作中に自動更新
- 注文商品の制作ステータスが全部制作完了になったら注文ステータスを発送準備中に自動更新
記述
注文ステータス→制作ステータス
注文ステータスが入金確認になったら制作ステータスが制作待ちに自動更新とするとき
admin/orders_controller.rb
def update
@order = Order.find(params[:id])
@order_details = @order.order_details
if @order.update(order_params)
@order_details.update_all(making_status: "制作待ち") if @order.status == "入金確認"
end
redirect_to admin_order_path(@order)
end
解説
記述
制作ステータス→注文ステータス
注文商品の制作ステータスが1つでも制作中になったら注文ステータスを制作中に自動更新
注文商品の制作ステータスが全部制作完了になったら注文ステータスを発送準備中に自動更新
admin/order_details_controller.rb
def update
@order_detail = OrderDetail.find(params[:id])
@order = @order_detail.order
@order_details = @order.order_details.all
#@order_detail.update(order_detail_params)
is_updated = true
if @order_detail.update(order_detail_params)
@order.update(status: "制作中") if @order_detail.making_status == "制作中"
@order_details.each do |order_detail|
if order_detail.making_status != "制作完了"
is_updated = false
end
end
@order.update(status: "発送準備中") if is_updated
end
redirect_to admin_order_path(@order)
end
解説
💎is_update = true
を一番上に書くのはなんで?
💎全体をif文で囲んでるのはなぜ?ifが入ってる文2個ifが入っちゃうことにならない?
そもそもifって何だったけ?
Discussion