我正在使用Devise并希望允许用户在没有current_password的情况下编辑他们的帐户。我仍然希望密码和password_confirmation存在,而不是current_password。
我已经阅读了Devise wiki,您可以在其中更新update_without_password,但我们无法找到有关如何仅更新update_without_current_password的内容。
有什么想法吗?
class Users::RegistrationsController < Devise::RegistrationsController
def configure_account_update_params
devise_parameter_sanitizer.for(:account_update) << [:first_name, :last_name, :email, :locale, :time_zone, :phone, :password, :password_confirmation]
end
end
答案 0 :(得分:0)
直接从Wiki窃取:
默认情况下,Devise允许用户使用
:registerable
模块更改密码。但有时,开发人员希望创建其他操作,允许用户在不需要密码的情况下更改其信息。在这种情况下,最好的选择是创建属于您的应用程序的控制器,并提供编辑和更新操作,就像对应用程序中的任何其他资源一样。请注意,虽然限制了您允许更改的参数。特别是,您可能只想允许用户数据字段,并避免更改电子邮件,密码和此类信息:
params[:user].permit(:first_name, :last_name, :address)
另一种解决方案是简单地覆盖&#34;更新资源&#34;你的注册控制器中的方法
class RegistrationsController < Devise::RegistrationsController
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
end
别忘了告诉devise在routes.rb中使用你的控制器:
devise_for :users, controllers: {registrations: 'registrations'}