验证非负整数和小数值

Sne*_*roo 42 ruby-on-rails

我的领域是: tax ratetax amount中,我想验证正值.

我写了这个验证:

:format => { :with => /\A[+]?\d+\Z/}
Run Code Online (Sandbox Code Playgroud)

但它并没有像小数点那样取数字4.67.它给我一个错误.什么类型的验证将适用于整数和浮点值?例如:2,57,54.56应该通过,但是-2.56,-87应该失败.

dim*_*uch 123

这不行吗?

validates :your_field, :numericality => { :greater_than_or_equal_to => 0 }
Run Code Online (Sandbox Code Playgroud)

(猜测遵守规则的税收会更正确:)

validates :your_field, :numericality => { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100 }
Run Code Online (Sandbox Code Playgroud)


Osw*_*ira 8

你可以使用:

validates :tax_rate, inclusion: { in: 0..5 }
Run Code Online (Sandbox Code Playgroud)

它允许使用如下值:0,2,1.2,3.2

希望能帮助到你!

  • 我在之前测试的一些验证中使用了相同的语法,但决定不使用它.如果用户输入的值超出该范围,则会收到错误,其中显示的内容为"不包含值".我选择了像`:greater_than_or_equal_to`这样的解决方案,因为用户会看到更有意义的错误. (2认同)

小智 5

你可以用validates_numericality_of :amount, :greater_than => 0.0