gpt4 book ai didi

ruby-on-rails - 如何在某些情况下仍然允许属性为零的同时验证数值和包含?

转载 作者:行者123 更新时间:2023-12-03 14:37:36 25 4
gpt4 key购买 nike

在 Rails 应用程序中,我在模型上有几个整数属性。

用户应该能够创建记录并将这些属性留空。

或者,如果用户输入这些属性的值,则应在一定范围内验证它们的数量。

在模型中我有这样的东西

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.

仅当为 :a 提供了值时,我如何才能验证数字性和包含性,同时仍然允许 :a在某些情况下为零?

谢谢

最佳答案

您可以添加 :allow_nil => true给您的 validates_numericality_of .

validates_numericality_of :a, :only_integer => true, :allow_nil => true, 
:message => "can only be whole number."

您也可以使用 greater_than_or_equal_toless_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."

关于ruby-on-rails - 如何在某些情况下仍然允许属性为零的同时验证数值和包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com