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

questionAnswers(2)

yourAnswerToTheQuestion