2016-09-24 46 views
0

我使用由設計生成的用戶範圍控制器傳遞附加屬性。設計問題 - 允許用戶編輯沒有密碼

class Users::RegistrationsController < Devise::RegistrationsController 
before_action :sign_up_params, only: [:create] 
before_action :account_update_params, only: [:update 

protected 

    def sign_up_params 
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :cpf]) 
    end 

    def account_update_params 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :cpf, :birth_date, :phone, :gender]) 
    end 

def update_resource(resource, params) 
    resource.update_without_password(params) 
end 

end 

devise_for :users, controllers: {registrations: 'users/registrations} 

一切都工作,直到該路由

包括 update_resource(資源,則params)方法給控制器,並在視圖中刪除 current_password字段,所建議 https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

更改後,我可以編輯除密碼之外的其他所有字段(first_name,last_name ... etc)。密碼更改不會持續。任何想法?

的Rails版本:5.0.0.1 設計版本:4.2.0

回答

0

account_update_params方法,你需要添加passwordpassword_confirmation

def account_update_params 
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :cpf, :birth_date, :phone, :gender, :password, :password_confirmation]) 
end 
+0

我試過Charn並沒有工作。 =/ – user1301037

+0

更新密碼時在開發日誌中出現任何錯誤 –

+0

不,在編輯視圖中編輯密碼和password_confirmation字段後,我通過成功消息重定向到根目錄,但新密碼未通過。 日誌顯示 - 完成401未授權259ms(ActiveRecord:1.1ms) – user1301037