我是Devise的新手,并通过使用电子邮件地址作为身份验证密钥使其工作正常。但是,我有一个需要用户名的用例,而我似乎无法使用它。
我在users表中添加了一个字符串列“username”,将字段从:email更改为:登录表单中的:username,并且已将devise.rb中的身份验证密钥更改为:username我去登录我遇到了这个提示:“请输入一个电子邮件地址”。
我做错了什么?
**new.html.erb**
<div><%= f.label :username %><br />
<%= f.email_field :username %></div>
**User.rb**
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:username]
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :username
# attr_accessible :title, :body
end
**devise.rb**
config.authentication_keys = [ :username ]
答案 0 :(得分:42)
在您的config / initializers / devise.rb中取消注释config.authentication_keys = [ :email]
并将其更改为config.authentication_keys = [ :username ]
更新
你的表格不正确。
将f.email_field
更改为f.text_field
答案 1 :(得分:1)
bundle exec rake db:migrate
rails generate devise:views
根据需要更改设计/视图(将电子邮件字段替换为用户名字段)
重启网络服务器
希望它有所帮助!