在使用Devise和Admin模型的应用中,我需要添加一些字段 - 它们已成功添加。现在我还需要让用户能够修改这些属性。当我打开视图以修改这些参数并发送表单时,新添加的字段(如电话号码,网站等)不会被修改。
在终端输出中,我看到它是因为这些参数是不允许的,但我怎么能允许它们?
整个update
进程发生的操作是registrations#update
:
def update
@user = User.find(current_user.id)
successfully_updated = if needs_password?(@user, params)
@user.update_with_password(devise_parameter_sanitizer.sanitize(:account_update))
else
params[:user].delete(:current_password)
@user.update_without_password(devise_parameter_sanitizer.sanitize(:account_update))
end
if successfully_updated
flash[:notice] = "Your password has been successfully changed."
# Sign in the user bypassing validation in case their password changed
sign_in @user, :bypass => true
redirect_to edit_user_registration_path(:status => 'ok')
else
render "edit"
end
end
这段代码似乎适用于users
,而不适用于admins
- 我该如何解决这个问题呢?
提前谢谢。
答案 0 :(得分:0)
class RegistrationsController < Devise::RegistrationsController
before_action :configure_permitted_parameters
# ...
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) << :username
end
end
在此示例中,我们将:username
参数添加到白名单。