現在、あるコードの書き方で悩んでおります。
一例なのですが、
- start_at
- end_at
のDateTime型の2つのカラムを持ったモデルから、「sample」というインスタンスを生成したとします。
ここで、以下のような値チェックを行いたいと思っています。
if sample.start_at.nil? && sample.end_at.nil? return elsif sample.start_at.present? && sample.end_at.nil? return if Time.now.to_i > sample.start_at.to_i elsif sample.start_at.nil? && sample.end_at.present? return if Time.now.to_i < sample.end_at.to_i elsif Time.now.to_i.between?(sample.start_at.to_i, sample.end_at.to_i) return else raise end
やりたいことは以下となります。
- start_atとend_atが共にnilだった場合はreturn
- start_atだけが存在するとき、その値が現在の日付以前だったらreturn
- end_atだけが存在する時、その値が現在の日付以降だったらreturn
- 両方存在するとき、それらの値の間に現在の日付が入っていたらreturn
- 上記のどれにも含まれない場合、例外発生
ただ、上記のコードだと非常に冗長というか、もう少しシンプルにかける気がしておりまして・・・。
どなたかご教授いただけないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。