Jak zweryfikować numeryczność i inkluzję, a jednocześnie pozwolić, aby atrybut był w niektórych przypadkach zerowy?
W aplikacji Rails mam kilka atrybutów całkowitych na modelu.
Użytkownik powinien mieć możliwość utworzenia rekordu i pozostawienia tych atrybutów pustych.
Lub, jeśli użytkownik wprowadzi wartości dla tych atrybutów, powinny być sprawdzone pod kątem numeryczności i w pewnym zakresie.
W modelu mam coś takiego
validates_presence_of :name
validates_numericality_of :a, :only_integer => true, :message => "can only be whole number."
validates_inclusion_of :a, :in => 1..999, :message => "can only be between 1 and 999."
Jeśli teraz przetestuję z minimalnymi wymaganymi atrybutami, aby zapisać:
factory :model do
sequence(:name) { |n| "model#{n}" }
end
it "should save with minium attributes" do
@model = FactoryGirl.build(:model)
@model.save.should == false
end
dostaję
Validation failed: a can only be whole number., a can only be between 1 and 999.
Jak mogę zweryfikować numeryczność i włączenie tylko wtedy, gdy podano wartość:a
, wciąż pozwalając:a
być w niektórych przypadkach zerowym?
Dzięki