Validation 如何使Desive PasswordController跳过用户验证?

Validation 如何使Desive PasswordController跳过用户验证?,validation,ruby-on-rails-3.1,devise,Validation,Ruby On Rails 3.1,Devise,我有一个Rails应用程序,使用Desive进行身份验证。Desive允许用户点击获取包含重置密码链接的电子邮件 当用户给出新密码时,会调用designe::PasswordsController#edit,但密码实际上会在用户模型上更新,然后保存 我的问题是,User有一个验证,在密码重置期间可能会失败,从而阻止它保存对用户模型的更改我想在重置密码时忽略该验证。 如何执行此操作?我会在您的用户模型上设置条件验证,如果密码确认为空(他们没有更改密码),则不会运行该验证。要实现这一点,您可以使用以

我有一个Rails应用程序,使用Desive进行身份验证。Desive允许用户点击获取包含重置密码链接的电子邮件

当用户给出新密码时,会调用
designe::PasswordsController#edit
,但密码实际上会在
用户
模型上更新,然后保存

我的问题是,
User
有一个验证,在密码重置期间可能会失败,从而阻止它保存对用户模型的更改我想在重置密码时忽略该验证。


如何执行此操作?

我会在您的用户模型上设置条件验证,如果密码确认为空(他们没有更改密码),则不会运行该验证。要实现这一点,您可以使用以下方法:

validates :accepted_terms_at, 
  :presence => {:if => proc {|u| u.password_confirmation.blank?}}
更新以满足您的验证需求。
ActiveModel
中的验证允许您提供一个proc来运行:if和:除非进行有条件的验证。该进程将通过当前实例(您案例中的用户实例)来确定是否应该运行验证

谢谢