2
這似乎是那種一個沒有腦子的,但我想需要數量,並確保它不小於預定量更大或更小:Rails 3的驗證numericality拋出參數錯誤時,空白/零
validates :age_min, presence: true, numericality: {
greater_than: 0, less_than_or_equal_to: :age_max
}
這個測試按預期工作
test 'user should not be valid with age min greater than age max' do
user = FactoryGirl.build(:user, age_min: 30, age_max: 20)
assert !user.valid?
end
然而,當我嘗試和測試age_min
要求:
test 'user should not be valid without age_min' do
user = FactoryGirl.build(:user, age_min: nil, age_max: 20)
assert !user.valid?
end
我得到ArgumentError: comparison of Float with nil failed
Rails沒有考慮到nil值,或者我錯過了什麼似乎很奇怪?看來你應該能夠在不寫一個自定義驗證器的情況下工作,但也許我錯了。
無論你驗證出和保護拆分您的驗證正在運行。 「存在:真實」驗證不會停止運行的數字驗證。我認爲你需要一個:除非=> Proc類型條件的數值驗證,但我不知道句法。 –