🙄

ステータスを連動させたい

2023/07/29に公開

今回やりたいこと

  • 注文ステータスが入金確認になったら制作ステータスが制作待ちに自動更新
  • 注文商品の制作ステータスが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