前提・実現したいこと
通常のバリデーションとカスタムのバリデーションを実装したい。
発生している問題・エラーメッセージ
- エラーメッセージ:undefined method `hour' for nil:NilClass
- 発生している問題:
vaildatesとvalidateを併用すると上記エラーメッセージが出る。この時、validateの方のみ機能している。
validateがなければvalidatesは正常に機能する。
該当のソースコード
Ruby
class Shift < ApplicationRecord belongs_to :staff has_many :post_comments, dependent: :destroy validate :start_finish_check validates :date, presence: true validates :start_time, presence: true validates :finish_time, presence: true def start_finish_check errors.add(:finish_time, "が開始時刻を上回っています。正しく記入してください。")if self.start_time.hour >= self.finish_time.hour end end
試したこと
仮説:エラーメッセージ通り、hourをどこか定義すればいいと思うのだが、validateのみだと機能するので、hour以外の問題もあるのではと思う。
まだ回答がついていません
会員登録して回答してみよう