我有一个简单的ActiveRecord模型:
class User < ActiveRecord::Base
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[\w\-._]*[\w\-_]\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
validates :password,
presence: true,
length: { minimum: 6 }
before_save { email.downcase! }
has_secure_password
end
所以这是我的问题。
1)如果我在密码vaildation中留下“presence:true”并将密码字段留空,当我在表单中按“创建”按钮时,我有两个相同的“密码为空”错误而不是一个。
2)如果我在密码vaildation中留下“presence:true”并用空格填写密码字段,我只有一个'密码是空白'错误。
3)如果我评论出现存在vaildation并将密码字段留空,我有一个'密码为空白'错误。
4)如果我注释了存在vaildation并用空格填写密码字段,我没有错误!
我想只有一个错误 - 无论是空场还是场满空格。我可以制作像@ user.errors.full_messages.uniq.each这样的黑客,但我不想这样做。
有没有办法让has_secure_password表现得像我想要的那样?..
答案 0 :(得分:0)
您可以将选项传递给has_secure_password
以跳过其内置验证并使用您自己的验证:
has_secure_password(validations: false)