如何在Rails 4中为设计注册添加自定义字段?

我正在尝试将一个字段添加到使用设计的注册页面。 我按照Devise文档中的说明进行操作。 新字段是“角色”字段。 我已成功将其迁移到数据库。 我现在正努力使注册有效。 这是新的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 

这是更改的用户模型:

 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 

一旦我添加了这两个文件,服务器甚至无法加载。 如何成功添加角色字段?

编辑

这是我的routes.rb文件

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

您还可以使用以下方法在设计用户表中添加自定义字段。

 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