Rails 4 + Devise - 更新用户帐户时未允许的参数

use*_*621 3 ruby parameters ruby-on-rails devise

我有以下设置:

的routes.rb

devise_for :users, :path_names => { :controllers => {:omniauth_callbacks => "omniauth_callbacks", :registrations => "registrations"}
Run Code Online (Sandbox Code Playgroud)

并且RegistrationController:

class RegistrationsController < Devise::RegistrationsController

  def update
    ...
  end

  def user_params
    params.require(:user).permit(:tw_account, :fb_account, :current_password, :password, :password_confirmation)
  end
end
Run Code Online (Sandbox Code Playgroud)

但每当我尝试更新用户的数据时,我都会收到以下错误消息:

未允许的参数:tw_account,fb_account

但是当我用这两个字段创建一个新帐户时,它们就被保存了下来.如何让它们更新?

谢谢

All*_*hun 8

这对我有用,继承了Devise :: RegistrationsController

class RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:account_update).push(:tw_account, :fb_account)
  end

end
Run Code Online (Sandbox Code Playgroud)

您还应该从参数中删除current_password,password_confirmation和密码,因为设计已经处理了这些.