设计问题 - 允许用户无需密码即可编辑

时间:2016-09-24 17:55:51

标签: ruby-on-rails devise

我正在使用由devise生成的用户范围控制器来传递其他属性。

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(resource,params)方法包含到控制器并删除视图中的 current_password字段,如建议https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password < / p>

在此更改之后,我可以编辑除密码之外的所有其他字段(first_name,last_name ...等)。密码更改不会持续存在。有什么想法吗?

Rails版本:5.0.0.1 设计版本:4.2.0

1 个答案:

答案 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