设计管理模型 - 如何允许参数(新字段)?

时间:2015-08-30 00:39:49

标签: ruby-on-rails parameters devise admin

在使用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 - 我该如何解决这个问题呢?

提前谢谢。

1 个答案:

答案 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参数添加到白名单。

https://github.com/plataformatec/devise#strong-parameters