【问题标题】:Combining validation errors in Rails在 Rails 中组合验证错误
【发布时间】:2009-09-08 14:01:07
【问题描述】:

例如,如果我有一个用户的电子邮件地址需要验证存在和格式:

validates_presence_of   :email_address, :message => "can't be blank"
validates_format_of     :email_address, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i

如果未输入任何内容,如何防止出现两条错误消息?我知道在这种情况下我不需要 validates_presence_of,这只是一个示例。谢谢

【问题讨论】:

    标签: ruby-on-rails ruby validation


    【解决方案1】:

    在此示例中,您可以将:allow_blank => true 添加到validates_format_of

    总的来说,我认为这取决于情况,通常可以通过巧妙地使用ActiveRecord validation options来解决。

    【讨论】:

    • 谢谢,这工作做得很好。当我想到我想要更多的情况时,我会发布它。
    【解决方案2】:

    你也可以引入条件:if,如:

    validates_format_of :email_address, :with => EMAIL_REGEXP, :if => :email_address?
    

    电子邮件地址?仅当该字段具有非空值时,方法才应返回 true。对于这样的情况,这可能非常方便。

    【讨论】:

    • 是的,如果条件可以使用另一个 validates_foo 这将更加相关... validates_format_of :email_address, :with => EMAIL_REGEXP, :if => {validates_whatever_of :email_address} 我知道那行不通,但这更清楚地解释了我最初的问题。
    • 我认为如果验证可以像你说的那样被链接起来会好很多,但是目前还没有支持。它们都一直在运行,并且每个都有机会引入错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多