Rails设计 - 允许用户在没有CURRENT密码的情况下编辑他们的帐户

时间:2015-03-10 15:25:03

标签: ruby-on-rails-3 devise

我正在使用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

1 个答案:

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

这是指原始链接:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password