2014-12-11 47 views
0

我正在關注Hartl的Rails教程,創建編輯用戶頁面。這是我在更新方法如何更新:Rails使用form_for和空白密碼字段更新用戶設置

@user.update_attributes(user_params) 

其中user_params的是用於強大的參數

在用戶模式我還包括以下行:

validates :password, length: { minimum: 6 }, allow_blank: true 

現在,當我編輯用戶的名稱/電子郵件並提交帶有空白密碼字段的表單時,用戶已成功更新(密碼保持不變,而不是變爲空白)。這就是我要的。但爲什麼這個工作? form_for方法有什麼特別之處?如果我使用rails控制檯並嘗試使用update_attributes方法和空密碼更新用戶,則該對象無法保存。

回答

1

這是因爲allow_blank選項,在這種情況下Rails會忽略密碼,如果它爲空或零。

我喜歡的另一種方法是使用password_required?的方法從devise開始,他們可以處理多種自定義驗證,並在需要覆蓋時爲您提供完全控制,但這只是額外的。

相關問題