5
我正在寫在ActiveRecord的自定義驗證,這樣一個最後期限是有道理的:導軌:驗證一個日期大於另一個
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
然而,這產生一個「NoMethodError:未定義的方法'>」近親: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
這項工作確定。
這消除了錯誤,但預期它不工作: '@ event.deadline = @ event.begins_at + 1.day;' '@event.should_not be_valid' 回報有效。 .. 我應該選擇一個更具體的寶石來完成這項工作嗎? – piffy
我糾正自己:在上面的代碼工作,而這並不: '@ event.deadline = @ event.begins_at;' '@event.should be_valid' 回報無效... – piffy
這可能是誤導...你會嘗試'@ event.deadline = @ event.begins_at; @ event.should有(0).errors_on(:截止日期)' –