質問: ### 前提・実現したいこと 投稿の際に昨日以前に日付設定した場合に投稿できないように機能を実装したい。 railsで指定した日付以降に開ける投稿アプリを作っています。 上記の機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` ArgumentError in ItemsController#create comparison of Time with nil failed ``` ### 該当のソースコード ``` Ruby validate :judge_future private def judge_future return unless open_day if (Time.now + 1.day) >= open_day#もし今日より過去ならerror errors.add(:open_day, 'は明日以降に設定してください。') end end ``` 対処法がわかる方いましたコメントお願いします。
回答: comparison of Time with nil failed というエラーは、 ``` if (Time.now + 1.day) >= open_day ``` の条件判定で起きていると考えられます。なぜなら、質問のコードの中で比較(comparison)が行われているのは、この部分だけだからです。 メッセージを直訳すると「Time と nil の比較に失敗した」ですから、『open_dayがnil』がエラーの原因です。 質問のコードには、open_dayに代入しているところがありません。 ・open_dayに何らかの値を代入する部分が抜けている ・質問のコードではないところでopen_dayに値が代入されるはずだったが、それが機能していない。 といった事が考えられます。 質問の『railsで指定した日付』がopen_dayなのだと思われますが、日付を指定している部分のコードが示されていませんので、対処法は誰にも判らないでしょうね。