【问题标题】:Custom error message for password presence validation密码存在验证的自定义错误消息
【发布时间】:2015-08-01 13:51:48
【问题描述】:

看起来这应该是直截了当的。注册新用户时,我想要空白用户名和密码的自定义错误。它适用于用户名:

validates :name, presence: { message: "Please enter a name." },

                      length: { maximum: 50, 
                      message: "Please enter a name shorter than 50 characters"}

当该字段为空白时,它会给出“请输入名称”。错误。

密码也是一样的:

 has_secure_password
     validates :password, presence: { message: "Please enter a password." }, 
                          length: { minimum: 8,
                             message: "Please choose a password with at least 8 \
                             characters."}

最小长度消息可以正常工作。但如果我使用空密码提交,我会收到默认的“不能为空”消息。

【问题讨论】:

  • 尝试删除has_secure_password并检查。

标签: ruby-on-rails


【解决方案1】:

has_secure_password 会自动为您添加一些验证:

创建时必须有密码

密码长度应小于或等于 72 个字符

密码确认(使用 password_confirmation 属性)

为了防止这种情况,声明:

has_secure_password validations: false

然后你可以添加你自己的。

【讨论】:

  • 行得通!我想它一定和 has_secure_password 有关,确实是这样。
  • 我找到了一个更好的方法来修改 config\app\locals.en.yml
【解决方案2】:

has_secure_password validations: false 起初有效,但我在编辑用户个人资料页面时遇到了问题。它假定用户可能没有输入密码。所以这取决于 has_secure_password 中的验证,上面的答案禁用了。

更好的方法是编辑 config/local/en.yml:

en:
  activerecord:
    attributes:
      user:
        password: "Password"
    errors:
      models:
        user:
          attributes:
            password:
              blank: "Please enter a password."

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2019-07-04
    • 1970-01-01
    • 2016-04-18
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多