因此,我正在发送密码重置电子邮件,并且在如何解决此问题时遇到了麻烦,因此在用户重置密码之后。我重新生成了一个新的密码重置令牌(我知道这很不好,在我发送密码重置请求时未生成它,但是那没有用,所以我尝试了这个。)。每次重新生成令牌时,它都不会跳过我在模型中设置的验证。
如前所述,我尝试过将其切换,在发送电子邮件之前以及现在他们重置密码之后重新生成新令牌。我还查看了has_secure_token
的文档,并且在重新生成令牌时看不到可以跳过验证的任何地方。
这是我的代码,用于在User
模型中重置密码。
def reset_password(password)
self.regenerate_reset_password_token
self.password = password
save(:validate => false)
end
重新生成令牌时,我收到验证用户密码的错误,如前所述,不确定在上面代码的第2行上重新生成令牌时如何跳过验证。
Validation failed: Password can't be blank, Password is too short (minimum is 8 characters)
答案 0 :(得分:0)
你可以
def generate_password_reset_token
self.reset_password_token = generate_token
self.reset_password_sent_at = Time.now
save!
end
def generate_token
SecureRandom.base58(5)
end