设计与用户名,而不是电子邮件认证(Devise authenticating with userna

2019-06-25 03:51发布

我是新来制定,并将它通过使用一个电子邮件地址作为认证密钥做工精细。 但是,我有需要的用户名,而不是一个用例,我似乎无法得到它的工作。

我添加了一个字符串列,“用户名”的用户表,改变了从领域:电子邮件:用户名的登录表单,并已改变了devise.rb的认证密钥:用户名然而,当我去登录我遇到了这样的提示:“请输入电子邮件地址”。

我究竟做错了什么?

**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 ]

Answer 1:

在你的config /初始化/ devise.rb取消注释config.authentication_keys = [ :email]并将其更改为config.authentication_keys = [ :username ]

更新:
你的窗体的不正确。
更改f.email_fieldf.text_field



Answer 2:

  • 首先,确保运行迁移。

bundle exec rake db:migrate

  • 生成设计的意见,否则将设计使用默认设置。

rails generate devise:views

  • 更改设计/意见,只要你想(更换电子邮件领域的用户名字段)

  • 重新启动Web服务器

希望能帮助到你!



文章来源: Devise authenticating with username instead of email