やりたいこと
@order_detailsの中のカラム名production_statusがどちらも"completed"だった場合→true
そうでなかった場合→falseを返したい。
@order_detailsの中身
ruby
1[#<OrderDetail:0x00007fc87f0ffda8 id: 1, order_id: 1, item_id: 1, production_status: "completed", amout: 10, price: 1100, created_at: Tue, 12 Oct 2021 01:15:16 JST +09:00, updated_at: Tue, 12 Oct 2021 19:05:24 JST +09:00>, 2 #<OrderDetail:0x00007fc87f0ffc68 id: 2, order_id: 1, item_id: 2, production_status: "waited", amout: 10, price: 1650, created_at: Tue, 12 Oct 2021 01:15:16 JST +09:00, updated_at: Tue, 12 Oct 2021 18:49:28 JST +09:00>]
ruby
1def update 2 #注文した全ての注文詳細 3 @order_details=OrderDetail.where(order_id: params[:id]) 4 ###if文の中身がわかりません。### 5 if @order_details.all?{|w| w.production_status=="completed"} 6 @order_detail.order.update(status: 3) 7 end 8 redirect_to admin_order_path(@order_detail.order_id) 9 end
初歩的な質問ですがよろしくお願い致します。
現状はなにが問題だと感じているのでしょうか?
「関数の実装方法がわからない」「実装をしたがエラーが出る」「実装の理解ができない、うまく動いている理由がわからない」「もっと良い書き方が知りたい」などなど。
「if文の書き方を知りたいです」
現状では、id 1、2のproduction_statusカラムの片方が"completed"だった場合、tureが返ってしまいます。
そうでなく、両方が"completed"だった場合、true。それ以外はfalseを返すプログラムを書きたいです。
であれば、ifの条件式であるこの部分がちゃんと期待通りになっていると思いますよ。
@order_details.all?{|w| w.production_status=="completed"}
できてました。すみません、ありがとうございます。
回答2件
あなたの回答
tips
プレビュー