2012-01-04 23 views
0

我有一個Rails應用程序,我正在使用Devise進行身份驗證。 Devise讓用戶點擊以獲取包含鏈接的電子郵件以重置密碼。如何讓Devise PasswordController跳過用戶驗證?

當用戶提供新密碼時,Devise::PasswordsController#edit被調用,但密碼在User型號上實際更新,然後保存。

我的問題是User有一個驗證,它可能會在密碼重置期間失敗,從而阻止它將更改保存到用戶模型。 我想在重置密碼時忽略該驗證。

我該怎麼做?

回答

0

我會在您的用戶模型上設置條件驗證,如果密碼確認爲空(它們不會更改其密碼),將不會運行該驗證。要做到這一點,您可以使用以下內容:

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

更新驗證需求。通過ActiveModel中的驗證,您可以提供一個proc來運行:if和:除非有條件驗證。該過程將通過當前實例(您的情況下的用戶實例)來確定是否應該運行驗證。

謝謝!