use*_*363 10 rspec ruby-on-rails ruby-on-rails-3.1
我们使用以下内容来检查stock_qty(一个整数或一个浮点数.可能为零但不是零)大于或等于零:
validates_numericality_of :stock_qty, :greater_than_or_equal_to => 0
validates_numericality_of :stock_qty, :less_than_or_equal_to => :in_qty, :if => Proc.new { |part| !part.in_qty.nil? }
Run Code Online (Sandbox Code Playgroud)
:in_qty是零件模型中的一列.此验证应允许正数或0表示:stock_qty.问题是如果:stock_qty被指定为零,则rspec失败.我注意到:less_than_or_equal_to只允许less_than并且不允许equal_to.有没有办法验证rails 3.1中的> =或<=?或者上面的验证码可能出错.非常感谢.
Eri*_*tes 16
尝试添加:only_integer => true如下:
validates_numericality_of :stock_qty, :only_integer => true, :greater_than_or_equal_to => 0
Run Code Online (Sandbox Code Playgroud)
编辑
如果当stock_qty为零或零时需要传递,则需要将代码更改为:
validates_numericality_of :stock_qty, :allow_nil => true, :greater_than_or_equal_to => 0
validates_numericality_of :stock_qty, :allow_nil => true, :less_than_or_equal_to => :in_qty, :if => Proc.new { |part| !part.in_qty.nil? }
Run Code Online (Sandbox Code Playgroud)
rma*_*002 10
validates :stock_qty, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0 }
Run Code Online (Sandbox Code Playgroud)
它适用于我的3.1应用程序,在我的情况下,我有价格,当我更新或添加产品没有价格我得到"这不是一个数字"错误,或类似的东西,但我可以在价格列中添加0它更新得很好.希望这可以帮助.
:greater_than_or_equal_to –指定值必须大于或等于提供的值.此选项的默认错误消息是"必须大于或等于%{count}".
http://guides.rubyonrails.org/active_record_validations_callbacks.html
| 归档时间: |
|
| 查看次数: |
24792 次 |
| 最近记录: |