2011-09-02 21 views
3

具體來說,我使用的是帶Typus的Devise。但是,我認爲我的誤解在於我對Devise的瞭解。如果任何重要字段已被更改,請設計並驗證current_password

我試圖實現當你想通過表單更改重要模型的功能,你必須提供你當前的密碼以確認你可以更改它,拉谷歌。

現在,我可以登錄並更改我的用戶模型的任何字段。包括密碼,無需事先確認我的密碼。不好。所以,我在表單中添加了current_password。但那沒有做任何事情。然後我嘗試驗證current_password上的存在。然後它似乎沒有接受任何價值。

谷歌沒有幫助我。所有相關的帖子都是關於刪除current_password而不是確認它。這讓我覺得我誤解了current_password的使用。

任何人都在意分享一些見解?謝謝。

+0

這將有助於您發佈部分代碼,至少是表單和控制器。 –

回答

6

您應該將密碼字段添加到窗體,然後在您的控制器的動作,你可以驗證使用的密碼:

user.valid_password?(params[:user][:password]) 

注意,也許你應該改變PARAMS [:用戶] [:密碼]表單中密碼字段的參數名(也許只是params [:password])。

希望它有幫助。

4

其實,色器件具有這樣的內置方法:

user.update_with_password(params, *options)您可以閱讀的RDoc here

當current_password匹配時更新記錄屬性,否則返回error:current_password。如果它們爲空,它也會自動拒絕:密碼和:password_confirmation。

相關問題