如何在某些情况下仍允许属性为零时validation数值和包含?
在Rails应用程序中,我在模型上有几个整数属性。
用户应该能够创建记录并将这些属性留空。
或者,如果用户输入这些属性的值,则应对其进行数值validation并在一定范围内进行validation。
在模型中,我有类似的东西
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."
如果我现在使用最低要求属性进行测试以保存:
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
我明白了
Validation failed: a can only be whole number., a can only be between 1 and 999.
只有在给出以下值时才能validation数值和包含:a
,同时仍允许:a
在某些情况下为零?
谢谢
您可以在validates_numericality_of
添加:allow_nil => true
。
validates_numericality_of :a, :only_integer => true, :allow_nil => true, :message => "can only be whole number."
如果您只想使用一个validation,也可以使用greater_than_or_equal_to
和less_than_or_equal_to
选项:
validates_numericality_of :a, :only_integer => true, :allow_nil => true, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 999, :message => "can only be whole number between 1 and 999."
应该简单地说:
validates_numericality_of :a, :only_integer => true, :message => "can only be whole number.", :allow_nil => true
同样用于第二次validation