これは簡単なことのように思えますが、数字を要求し、それが所定の量より大きくも小さくもないことを確認したいと思います。
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値を考慮に入れていないのは奇妙に思えますか、それとも何かが足りませんか?カスタムバリデーターを作成しなくてもこれを機能させることができるはずですが、おそらく私は間違っています。