LoginSignup
6
4

More than 3 years have passed since last update.

【バリデーション】rails 今日の日付以降を指定する方法

Posted at

【ゴール】

日付入力の際に、今日以降の日付しか入力できないように
バリデーションをかける

【メリット】

■ 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」でエラー文もついでに定義
 

model/item.rb



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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4