Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom user fields in Devise 3 under Rails 4

I'm using the release candidate of Devise 3 so that I can use it with Rails 4. In Rails 3.2 I used to be able to add a custom field to my User model by simply adding that field to the registration/edit.html.erb and registration/new.html.erb files (after running the proper migration). Then I'd just add that field to the attr_accessible list of fields in the model.

However, in Rails 4, there is no attr_accessible list and I can't simply add fields in the views. How do I add custom User fields?

like image 226
at. Avatar asked May 31 '13 07:05

at.


3 Answers

Adding

     def configure_permitted_parameters
         devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) }
         devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) }
         devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) }
     end

To applicationcontroller worked for me.

like image 72
Spencer Avatar answered Oct 19 '22 13:10

Spencer


I was told to look in the main README on the github page and there it was. Easy.

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end
like image 29
at. Avatar answered Oct 19 '22 11:10

at.


In case you want to permit additional parameters you can do with a simple before filter in your

ApplicationController:

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end
like image 24
aniruddha Birajdar Avatar answered Oct 19 '22 12:10

aniruddha Birajdar