Adding name attribute to `User` in Devise Adding name attribute to `User` in Devise ruby-on-rails ruby-on-rails

Adding name attribute to `User` in Devise


Rails 3

in your user model locate;

 attr_accessible :email, :password, :password_confirmation, :remember_me

and add :name on the end


Rails 5 (in fact devise 4)

Tested for: rails 5.1.0 (devise 4.2.1)

There is no need to work with devise controllers.

Just add the following to your application_controller.rb:

before_action :configure_permitted_parameters, if:  :devise_controller?protected  def configure_permitted_parameters    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])  end

devise_parameter_sanitizer.for no longer works with Rails 5 (to be more correct, it is not supported in devise 4, which is the expected devise version in a Rails 5 context): use devise_parameter_sanitizer.permit to avoid undefined method 'for' for #<Devise::ParameterSanitizer error


Add this code to application_controller.rb

before_action :configure_permitted_parameters, if: :devise_controller?protecteddef configure_permitted_parameters  devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) }  devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }  devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) }end