【问题标题】:Duplicate flash error messages with multiple validations具有多个验证的重复闪存错误消息
【发布时间】:2012-10-11 20:22:01
【问题描述】:

我目前正在使用此代码验证我的模型:

validates :price, :presence => true, :numericality => {:greater_than => 0}

这很好用,除了当我没有在此字段中输入任何值时,我得到 2 个错误 - “价格不能为空白”和“价格不是数字”。

我可以理解为什么会发生这种情况 - 很明显,这两项测试都失败了。但是我想知道是否有一种方法可以在一次测试后停止验证,因为如果根本没有数字,那么如果数字 > 0 就没有必要进行测试?

谢谢!

编辑:为清楚起见,我不想让该字段为空白,我只是不希望在它为空白时运行数值测试,以避免出现 2 个错误消息,而实际上是 1 个错误。

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 activerecord


【解决方案1】:

不确定是否可行,但您可以尝试:

validates :price, :presence => true, :numericality => {:greater_than => 0, :allow_blank => true }

【讨论】:

  • 抱歉,问题中可能不清楚 - 我不想让该字段为空白,我只是不希望在为空白时运行数值测试,以避免2 条错误消息,实际上是 1 条错误。
  • 如果我没记错的话,存在验证器会忽略 allow_blank 哈希字段,因此所有验证器都将允许空白值,但存在一个不会,因此只会产生一个错误;)我无法在这里测试它,但认为它应该工作:)
  • 刚刚测试过,如果该字段为空,它仍然会给出两个错误:-(
  • 哎呀,说得太早了——看起来这实际上是有效的,是我的测试出了问题。谢谢!
  • 看起来您进行了编辑以使其正常工作 - 我以为我只是打错了。感谢您的帮助!
猜你喜欢
  • 2015-08-09
  • 1970-01-01
  • 2013-02-27
  • 2022-10-18
  • 1970-01-01
  • 2011-09-03
  • 2019-04-28
  • 1970-01-01
  • 2019-04-06
相关资源
最近更新 更多