1
我想在某些字段上使用:presence => true來驗證模型,但即使這些字段爲零,模型也會返回爲有效。這裏是我的重播模型的驗證:爲什麼這些存在驗證失敗
validate :match_id, :presence => true
validate :replay_url, :presence => true
validate :uploader_id, :presence => true
如果我打開控制檯,然後輸入以下內容,你能明白我的意思:
1.9.3p0 :001 > r = Replay.new
=> #<Replay id: nil, match_id: nil, replay_url: nil, created_at: nil, updated_at: nil, uploader_id: nil>
1.9.3p0 :002 > r.valid?
=> true
有誰知道這是爲什麼?
你給'validate'被調用,預計通過'errors.add'添加錯誤指示,什麼是錯的符號,返回值是忽略。你將通過AR得到一個'match_id'方法,所以'validate:match_id'將會運行,即使它不會像你期望的那樣工作。答案是正確的,但我想出了可能想知道爲什麼你的不正確的代碼默默失敗。 – 2012-01-18 07:16:45