这是我尝试过的,
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'
问题:如何在我的设计宝石中添加用户名字段?
答案 0 :(得分:9)
我也做了同样的事情。请按照以下步骤操作:
rails generate migration add_username_to_users username:string:uniq
rake db:migrate
添加attr_accessible :username
:
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
在配置/初始化程序中,如果您想要email
替换usernname
config.authentication_keys = [ :username ]
config.case_insensitive_keys = [ :username ]
config.strip_whitespace_keys = [ :username ]
更新视图。
注意如果attr_accessible :username
错误,请尝试attr_accessor :username
答案 1 :(得分:8)
devise wiki有一个指南允许用户使用用户名登录,也许它可以帮助您?
答案 2 :(得分:5)
如果您使用的是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
答案 3 :(得分:4)
如果您使用的是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
答案 4 :(得分:2)
设计实际上将字段添加到您在设计设置期间指定的模型。如果您已向该模型添加迁移。例如,您已经使用了设计用户模型,然后您可以生成迁移以将用户名模型添加到用户模型并运行db:migrate并将attr_accessible:username添加到模型中,如果您使用的是rails&lt; 4
答案 5 :(得分:2)
您必须在下面的命令
中给出的模型中添加用户名rails g devise <modelname>
完成后,您需要按照上述步骤操作,但需要修改设计配置文件以查找登录用户名而不是电子邮件。然后重新启动rails服务器,它应该没问题。