[英]NoMethodError: undefined method `<' for nil:NilClass
我在創建優惠券時在我的應用程序中添加自定義驗證,優惠券有效期的開始日期應該在結束日期之前。
validate :to_must_be_after_from
private
def to_must_be_after_from
if valid_to < valid_from
self.errors[:base] << "Coupon cannot expire before the start of its validity period."
end
end
valid_to 和 valid_from 是日期字段。
當我運行它時,發生了 NoMethodError。 我對此有以下疑問,
大多數運算符實際上是 Ruby 中的方法。 這段代碼:
valid_to < valid_from
只是語法糖
valid_to.<(valid_from)
錯誤消息幾乎不言自明,您必須確保valid_to
和valid_from
不是nil
,例如使用保護子句,即像這樣:
def to_must_be_after_from
return if valid_to.blank? || valid_from.blank?
# rest of the code
end
首先,您需要檢查 valid from 或 valid to 是否為空白。 然后您可以檢查該值是小於還是大於 。
def to_must_be_after_from
return if valid_from.blank? || valid_to.blank?
if valid_from < Date.today
errors.add(:base, "You can't select past dates in valid from")
elsif valid_to < valid_from
errors.add(:base, "valid to can't be before the valid from date")
end
end
根據錯誤消息-
您正在嘗試比較其中one variable is nil
。 在檢查驗證之前,您能否檢查valid_to
和valid_from
是否具有正確的值 - if valid_to < valid_from
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.