如何添加用户名字段来设计gem?
这是我试过的,
-
rails g migration add_username_to_hrs
-
bundle exec rake db:migrate
-
添加了
attr_accessible:username
-
重启服务器
我的add_username_to_hr.rb
class AddUsernameToAuthorize < ActiveRecord::Migration def change add_column :authorizes, :username, :string end end
错误
#的未定义方法`username’
问题 :如何在我的设计gem中添加用户名字段?
我做了同样的事。 请按以下步骤操作:
-
rails generate migration add_username_to_users username:string:uniq
-
rake db:migrate
-
添加
attr_accessible :username
-
在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
-
在config / initializers中, 如果要用
usernname
替换email
config.authentication_keys = [ :username ] config.case_insensitive_keys = [ :username ] config.strip_whitespace_keys = [ :username ]
-
更新视图。
请注意,如果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,请按照以下步骤操作:
-
rails g migration AddUserNameToAuthorize
-
rake db:migrate
-
将此代码放在
application_controller.rb
以接受sign_in
,sign_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服务器,它应该没问题。