How do i add a custom field to a devise registration in Rails 4?

↘锁芯ラ 提交于 2019-12-11 20:29:45

问题


I am trying to add one field to my registration page that uses devise. I followed the instructions in the Devise document. The new field is the "role" field. I have already succesfully migrated it to the database. I am now trying to make it so that the signup works. Here is the new applicationcontroller:

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

    def devise_parameter_sanitizer
        if resource_class == User
          User::ParameterSanitizer.new(User, :user, params)
        else
          super # Use the default one
        end
    end
end

And here is the changed User model:

class User::ParameterSanitizer < Devise::ParameterSanitizer
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  def sign_up
    default_params.permit(:email, :role)
  end
end 

Once I added these two files, the server cannot even load. How do I successfully add the role field?

EDIT

Here is my routes.rb file

devise_for :users
root 'static_pages#home'
get 'student' => 'static_pages#index'

回答1:


You can also use following approach to add custom field in devise user table.

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.

  before_filter :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:firstname, :lastname, :email, :password, :password_confirmation) } # The :firstname and :lastname are my custom fields.
  end

  protect_from_forgery with: :exception
end 


来源:https://stackoverflow.com/questions/19371013/how-do-i-add-a-custom-field-to-a-devise-registration-in-rails-4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!