密码存在validation的自定义错误消息

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

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自动为您添加一些validation:

密码必须在创建时出现

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

确认密码(使用password_confirmation属性)

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

 has_secure_password validations: false 

然后你可以添加自己的。

has_secure_passwordvalidation:false起初工作,但是当我创建编辑用户个人资料页面时遇到了问题。 它假定用户可能没有输入密码。 所以它取决于has_secure_password中的validation,上面的答案禁用了。

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

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