Rails 4 + Devise - Undefined options when updating user account
I have the following setup:
routes.rb
devise_for :users, :path_names => { :controllers => {:omniauth_callbacks => "omniauth_callbacks", :registrations => "registrations"}
and 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
But every time I try to update user data, I get this error message:
Unproduced parameters: tw_account, fb_account
But when I create a new account with these two fields, they persist. How do you make them updatable?
thank
source to share
This works for me, inherits 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
You should also remove the current_password, password_confirmation and password from the parameters because they have already been processed.
source to share
You might want to go with
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:tw_account, :fb_account, :current_password, :password, :password_confirmation) }
end
end
source to share
Problem solved with change ' devise_parameter_sanitizer.for'
fromdevise_parameter_sanitizer.permit
My line works fine:
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:name, :last_name, :image,:email, :password, :password_confirmation, :current_password) }
end
end
source to share