Rails5.1.3でWebアプリケーション制作の勉強中です。条件分岐の記述について教えてください。
やりたいことは 数段階に分けて条件分岐し途中で条件がtrueになったら抜けるみたいなイメージです。
・@cccにはチェックしたい主キーが入っています ・eeeには@cccの中の「在籍」のidが入っています。 ・@dddには@cccの要素数が入っています。 ・@fffには@cccの中の「在籍」の要素数が入っています。 ・ if @ddd == @fff------------------ # 要素数の数が同じだったらこの式から抜ける。 @lily = @ddd ----------------- # @lilyの値をビューに渡し表示する。 else ---------------------------- # 要素数の数が違った場合、以下を実行する。 kkk = [] ---------------------- # kkkという空の配列を作る。 kkk << @ccc ------------------- # if文を実行するため配列kkkに値を入れる。 vvv = [] ---------------------- # register_checkで使用する配列を作成。 vvv = @ccc - eee -------------- # 配列vvvに不在の主キーを代入する。 register_check ---------------- # ここでvvvのグループの現在の月の在籍、不在をチェックする。 if kkk.empty? ---------------- # チェックした結果、在籍が 0 なら1回目のチェックをする。 register_check else -------------------------- # 在籍が1つ以上あれば以下を実行しこの式から抜ける。 eee << r ------------------- # 在籍が1つ以上あれば配列にrを代入する。 if kkk.empty? --------------- # チェックした結果、在籍が 0 なら2回目のチェックをする。 register_check else ------------------------ # 在籍が1つ以上あれば以下を実行しこの式から抜ける。 eee << r ------------------ # 在籍が1つ以上あれば配列にrを代入する。 if kkk.empty? ------------- # チェックした結果、在籍が 0 なら3回目のチェックをする。 register_check 「在籍」が確認出来るまで以下これを数回繰り返す。 else eee << r if kkk.empty? register_check else eee << r if kkk.empty? register_check else eee << r if kkk != nil eee << r end end end end end end end
同じコードの繰り返しになっていますが メソッドregister_check を実行し 配列 kkk に値を代入し、次の if kkk.empty? が false だったら途中で抜けるとしたいのです。
質問内容が少し雑でわかりにくいかと思いますが、こんな感じで条件分岐をつなげての記述はできるのでしょうか?
どなたか教えていただけないでしょうか?宜しくお願いします。
追記
def register_check vvv.each do |t| hhh = Customer.find_by(id: t) iii = hhh.nickname aaa = Sponsor.where(sponsor1: iii).pluck(:customer_id) kkk = [] vvv = [] aaa.each do |u| @coala = Ragister.find_by(customer_id: u) if @month == 1 fox = @coala.jan elsif @month == 2 fox = @coala.feb elsif @month == 3 fox = @coala.mar elsif @month == 4 fox = @coala.apr elsif @month == 5 fox = @coala.may elsif @month == 6 fox = @coala.jun elsif @month == 7 fox = @coala.jul elsif @month == 8 fox = @coala.aug elsif @month == 9 fox = @coala.sep elsif @month == 10 fox = @coala.oct elsif @month == 11 fox = @coala.nov else fox = @coala.dec end if fox == "在籍" kkk << u end if fox == "不在" vvv << @ccc end end end end
追記
コードの説明を記述中におかしなところがあったので少し編集しました。
意味を持った変数名にしようとしましたがいいのが思いつかなかったので変更しておりません。すいません。
このような記述でチェックをして何回目かで「在籍」が確認できた場合(配列kkkが「空」じゃない。)にその時点でこの式から抜け出すようにしたいのですがこのような記述でいいのでしょうか?わかりにくくてすいません。宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー