【发布时间】:2017-04-11 20:11:45
【问题描述】:
我正在使用 Rails 5。如果属性与模式不匹配,我如何为我的模型创建一个验证规则,该验证集是有效的?我有这个
validates_numericality_of :my_str, :with => /\d:\d/, :allow_blank = true
但我真正想说的是验证字符串是否与正则表达式不匹配。
【问题讨论】:
标签: validation model ruby-on-rails-5
我正在使用 Rails 5。如果属性与模式不匹配,我如何为我的模型创建一个验证规则,该验证集是有效的?我有这个
validates_numericality_of :my_str, :with => /\d:\d/, :allow_blank = true
但我真正想说的是验证字符串是否与正则表达式不匹配。
【问题讨论】:
标签: validation model ruby-on-rails-5
我的理解是,如果验证不是数字,您希望通过验证,那么为什么不更改正则表达式以匹配数字以外的任何内容:
/^(?!\d)/
使用您的代码将是
validates_format_of :my_str, :with => /^(?!\d)/, :allow_blank = true
或者:
正如documentation 所说的那样
或者,您可以要求指定的属性不 使用 :without 选项匹配正则表达式。
所以:
validates_format_of :my_str,format: { without => /\d:\d/}, allow_blank = true
validates_format_of 通过测试属性值是否匹配给定的正则表达式来验证属性值,该正则表达式使用:with 或:without 选项指定
【讨论】:
validates_format_of 代替validates_numericality_of,后者有:without 选项。