【发布时间】:2017-02-20 06:48:22
【问题描述】:
我希望将(数字)模型属性 foo 验证为
- (1) 存在,并且
- (2) 大于等于0。
由于 (1) 是 (2) 的先决条件,如果没有为参数 foo 指定值,我希望验证仅报告与 (1) 相关的错误,而不是 (2)。
我试着这样做:
validates :foo_attribute,
numericality: {greater_than_or_equal_to: 0},
presence: true
但是当参数 :foo 的给定值不存在时,我会在 errors 中收到来自验证 (1) 和 (2) 的消息。
在这种情况下,我怎样才能只得到与 (1) 而不是 (2) 相关的验证错误?
【问题讨论】:
-
是否可以选择使用 2 个单独的验证行来验证存在性和数量性?
-
@sajan 那会让事情变得更糟。
-
我认为你需要编写自己的验证方法
-
@sawa 我在暗示类似
validates :foo_attribute, numericality: {greater_than_or_equal_to: 0}, if: 'foo_attribute.present?' -
@sajan 我明白了。那可行。但如果那是我应该走的路,那么我想知道
validates :foo_attribute, numericality: {greater_than_or_qaeusl_to: 0}, presence: true语法的目的是什么(这很优雅但不起作用)。好像没用。
标签: ruby-on-rails validation error-handling