##【ゴール】
日付入力の際に、今日以降の日付しか入力できないように
バリデーションをかける
##【メリット】
■ UXの向上
■ validate理解度向上
##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7
##【実装】
※任意のメソッド名でvalidateを作成
※メソッドの処理を追記
①「return if start_day.blank?」 で空かどうか判断
②「if start_day < Date.today」で今日の日付を取得 & 条件分岐 & 比較
③「errors.add」でエラー文もついでに定義
validate :date_before_start
validate :date_before_finish
def date_before_start
return if start_day.blank?
errors.add(:start_day, "は今日以降のものを選択してください") if start_day < Date.today
end
def date_before_finish
return if finish_day.blank? || start_day.blank?
errors.add(:finish_day, "は開始日以降のものを選択してください") if finish_day < start_day
end
以上!!
##【合わせて読みたい】
■RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い
https://qiita.com/jnchito/items/cae89ee43c30f5d6fa2c
■ 【ERROR メッセージ表示】rails 部分テンプレートでいつでも使える 簡易版
https://qiita.com/tanaka-yu3/items/63b189d3f15653cae263
■ 【Date.today】 今日だけの情報を取り出す方法 rails
https://qiita.com/tanaka-yu3/items/741711bd743b80eda51a