我有一个Rails应用程序,我使用Devise进行身份验证。设计允许用户点击以获取包含重置密码的链接的电子邮件。
当用户提供新密码时,会调用Devise::PasswordsController#edit
,但密码实际上会在User
模型上更新,然后保存。
我的问题是User
有一个验证,可能会在密码重置期间失败,从而阻止它将更改保存到用户模型。 我想在重置密码时忽略该验证。
我该怎么做?
答案 0 :(得分:0)
如果密码确认为空(他们没有更改密码),我会在您的用户模型上设置一个条件验证,该验证不会运行验证。为此,您将使用以下内容:
validates :accepted_terms_at,
:presence => {:if => proc {|u| u.password_confirmation.blank?}}
更新您的验证需求。 ActiveModel
中的验证允许您提供运行的过程:if和:除非有条件地验证。该proc将通过当前实例(在您的情况下为用户实例)来确定是否应该运行验证。
谢谢!