我正在 ActiveRecord 中编写一个自定义验证器,以便截止日期有意义:
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
然而,这会生成一个“NoMethodError: undefined method `>' for nil:NilClass”。我试图将日期转换为字符串,例如:
def deadline_is_possible?
if deadline.to_s > begins_at.to_s
errors.add(:deadline, 'must be possible')
end
end
尽管它不会产生错误,但也不起作用。
我还声明了其他验证器(例如
def begins_at_is_date?
if !begins_at.is_a?(Date)
errors.add(:begins_at, 'must be a date')
end
end
那行得通。