【问题标题】:Override validation error message for SecurePassword [duplicate]覆盖 SecurePassword 的验证错误消息 [重复]
【发布时间】:2011-09-03 18:06:31
【问题描述】:

可能重复:
Fully custom validation error message with Rails

我正在使用 Rails 3.1rc1 并认为 SecurePassword 对我有用。但是,我不喜欢默认的错误消息Password digest can't be blank。如果我自己打电话给validates_presence_of :password_digest,我可以传递:message => "Password can't be blank",但因为它在框架中,我不确定如何覆盖消息以删除“digest”一词,这只会让joe用户感到困惑。有人知道怎么做吗?

编辑:

尝试添加“覆盖”:validates_presence_of,如下所示:

class User < ActiveRecord::Base
  attr_accessible :email, :password

  has_secure_password
  validates_presence_of :password_digest, :message => "Password can't be blank"
end

但是当你尝试提交一个空白密码时,你只会得到双倍的错误:

表单无效

  • 密码摘要不能为空
  • 密码摘要密码不能是 空白

【问题讨论】:

    标签: ruby-on-rails validation


    【解决方案1】:

    所做的只是添加行

    validates_confirmation_of :password
    validates_presence_of     :password_diges
    

    t

    如果添加行

    validates_presence_of :password_digest, :message => "Password can't be blank"
    

    这应该可行,因为这正是调用 has_secure_password 所做的。

    【讨论】:

    【解决方案2】:

    我相信您可以使用Rails Internationalization API 来改变这一点。

    在您的 config/locales/en.yml 文件中,添加以下内容:

    en:
      activerecord:
        attributes:
          user:
            password_digest: "Password"
    

    如果您的模型类不是“用户”,则需要适当地更改该行。

    无论如何,这对我有用。

    【讨论】:

    • 如果您使用 mongoid + mongodb(显然)不使用活动记录,则不起作用,您对在这种情况下会做什么有什么想法吗?
    • @TylerBrock 看看 Hubert Łępicki / amerbit 的 Translator gem:github.com/amberbit/translator
    • @TylerBrock 代替 mongoid,您可以将 i18n 文件中的 activerecord: 位替换为 mongoid:
    • 只是想说声谢谢...来自未来!
    • 这里不需要接触任何 YAML 文件,也不需要validates_presence_of :password_digest。 password_digest 将由has_secure_password 自动验证。只需添加validates :password, :presence =&gt; true 并忽略其余部分。这对我来说效果最好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2012-10-28
    • 2020-01-17
    • 2018-01-28
    相关资源
    最近更新 更多