【发布时间】:2014-09-19 14:28:54
【问题描述】:
我目前有一个用户具有额外的属性,我希望他们能够在不输入当前密码的情况下进行更新。
所以我必须创建自己的 RegistrationsController 并覆盖更新方法。 (取自 Devise github 页面)。
def update
account_update_params = devise_parameter_sanitizer.sanitize(:account_update)
# required for settings form to submit when password is left blank
if account_update_params[:password].blank?
account_update_params.delete('password')
account_update_params.delete('password_confirmation')
end
@user = User.find(current_user.id)
if @user.update_attributes(account_update_params)
set_flash_message :notice, :updated
# Sign in the user bypassing validation in case their password changed
sign_in @user, :bypass => true
redirect_to edit_user_registration_path
else
render 'edit'
end
end
但是现在,如果他们想更改密码,我想要求他们输入正确的当前密码。这似乎是一个问题,因为如果他们确实输入了当前密码,我必须将其添加到允许的参数中。但是它告诉我 current_password 不是用户的有效属性。
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :email, :attr1, :attr2,
:password, :password_confirmation) }
end
【问题讨论】:
标签: ruby-on-rails ruby devise