Как я могу заставить Devise PasswordController пропустить проверку пользователя? - PullRequest
0 голосов
/ 04 января 2012

У меня есть приложение Rails, где я использую Devise для аутентификации.Devise позволяет пользователям нажимать, чтобы получить электронное письмо со ссылкой для сброса пароля.

Когда пользователь вводит новый пароль, вызывается Devise::PasswordsController#edit, но пароль фактически обновляется в модели User,затем сохраняется.

Моя проблема в том, что User имеет проверку, которая может не пройти во время сброса пароля, что не позволяет сохранить изменения в модели пользователя. Я хочу игнорировать эту проверку при сбросе пароля.

Как я могу это сделать?

1 Ответ

0 голосов
/ 04 января 2012

Я бы установил условную проверку для вашей модели пользователя, которая не будет запускать эту проверку, если подтверждение пароля пустое (они не меняют свой пароль). Для этого вы должны использовать следующее:

validates :accepted_terms_at, 
  :presence => {:if => proc {|u| u.password_confirmation.blank?}}

Обновление для ваших нужд проверки. Проверка в ActiveModel позволяет вам предоставить процесс для запуска: if и: разве что для условной проверки. Эта процедура будет передана текущему экземпляру (пользовательскому экземпляру в вашем случае), чтобы определить, должна ли выполняться проверка.

Спасибо!

...