Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't add custom fields to Devise model in Ruby on Rails. Private method error

Generated User model using Devise gem.

Trying to add 'username' attribute.

Followed official documentation, now my ApplicationController looks like this:

class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception
  before_action :configure_permitted_parameters, if: :devise_controller?
  before_action :authenticate_user!

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:account_update, keys: [:username])
    devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end

end

When I try to go to account update page I get following error:

NoMethodError in Devise::RegistrationsController#edit

private method `permit' called for #Devise::ParameterSanitizer:0x007f13396cf180>

What can be wrong in here?

like image 669
Marat Avatar asked Dec 29 '15 11:12

Marat


1 Answers

According to this answer, you can also do the following:

def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_in)        << :username
   devise_parameter_sanitizer.for(:sign_up)        << :username
   devise_parameter_sanitizer.for(:account_update) << :username
end
like image 188
Richard Peck Avatar answered Oct 20 '22 00:10

Richard Peck