如何添加用户名字段来设计gem?

这是我试过的,

  1. rails g migration add_username_to_hrs

  2. bundle exec rake db:migrate

  3. 添加了attr_accessible:username

  4. 重启服务器

我的add_username_to_hr.rb

 class AddUsernameToAuthorize < ActiveRecord::Migration def change add_column :authorizes, :username, :string end end 

错误

#的未定义方法`username’

问题 :如何在我的设计gem中添加用户名字段?

我做了同样的事。 请按以下步骤操作:

  1. rails generate migration add_username_to_users username:string:uniq

  2. rake db:migrate

  3. 添加attr_accessible :username

  4. 在application_controller.rb中:

     before_action :configure_permitted_parameters, if: :devise_controller? protected def 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 
  5. 在config / initializers中, 如果要用usernname替换email

     config.authentication_keys = [ :username ] config.case_insensitive_keys = [ :username ] config.strip_whitespace_keys = [ :username ] 
  6. 更新视图。

请注意,如果attr_accessible :username给出错误,请尝试attr_accessor :username

在设计维基上有一个指南,允许用户使用用户名登录,也许它可以帮助你?

如果您使用的是rails 4,则将以下代码放在应用程序控制器中

 class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) << :username end end 

如果您使用的是rails 4,请按照以下步骤操作:

  1. rails g migration AddUserNameToAuthorize

  2. rake db:migrate

  3. 将此代码放在application_controller.rb以接受sign_insign_up以及account_update用户名参数:

     class ApplicationController < ActionController::Base protect_from_forgery with: :exception def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:email, :password,:username) } devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation,:username) } devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation,:username) } end end 

设计实际上将字段添加到您在设计设置期间指定的模型。 如果您已向该模型添加迁移。 例如,您已经使用了设计用户模型,然后您可以生成迁移以将用户名模型添加到用户模型并运行db:migrate并将attr_accessible:username添加到模型中,如果您使用的是rails <4

您必须在下面的命令中给出的模型中添加用户名

 rails g devise  

完成后,您需要按照上述步骤操作,但需要修改设计配置文件以查找登录用户名而不是电子邮件。 然后重新启动rails服务器,它应该没问题。