Wie kann die Numerizität und Inklusion überprüft werden, wobei das Attribut in einigen Fällen immer noch null sein darf?

In einer Rails-App habe ich mehrere ganzzahlige Attribute für ein Modell.

Ein Benutzer sollte in der Lage sein, einen Datensatz zu erstellen und diese Attribute leer zu lassen.

Wenn der Benutzer Werte für diese Attribute eingibt, sollten diese auf ihre Numerizität und innerhalb eines bestimmten Bereichs überprüft werden.

Im Modell habe ich so etwas

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."

Wenn ich jetzt mit den minimal erforderlichen Attributen teste, um zu speichern:

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

Ich bekomme

Validation failed: a can only be whole number., a can only be between 1 and 999.

Wie kann ich Numerizität und Inklusion nur dann validieren, wenn ein Wert für angegeben ist?:a, während immer noch erlaubt:a in einigen Fällen Null zu sein?

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage