はじめまして。
Ruby on Railsを学習の中で、スケジュール登録機能を作成しています。
カスタムバリデーションで「開始日時」と「終了日時」について
以下2つを設定してみたのですが、うまく動作しなかったため投稿しました。
バリデーションの内容は以下です。
a.開始日時は現在の時間より遅い時間を選択する
b.終了日時は開始日時より遅い時間を選択する
この時、「b.終了日時は開始日時より遅い時間を選択する」は動作するのですが、
「a.開始日時は現在の時間より遅い時間を選択する」が機能しません。
コードは以下になります。
validates :start_time, presence: true validates :end_time, presence: true validate :start_end_check #終了日時が開始日時より遅い日時かチェック validate :start_check #開始日時が現在の時間より遅い日時かチェック def start_check if start_time.present? && start_time > Time.current errors.add(:start_time, "は現在の日時より遅い時間を選択してください。") end end def start_end_check if start_time.present? && end_time.present? && start_time > end_time errors.add(:end_time, "は開始日時より遅い時間を選択してください。") end end
application.rb #タイムゾーン指定 config.time_zone = 'Tokyo'
調べているのですが「バリデーションのチェックがなぜかからないのか」
「そもそも記述方法がおかしいのか」といったところが解決できずにおります。
大変恐れ入りますが、ご教示のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 09:51