Разработайте аутентификацию с помощью имени пользователя вместо электронной почты


Я новичок в разработке, и он отлично работает, используя адрес электронной почты в качестве ключа аутентификации. Тем не менее, у меня есть вариант использования, который требует имя пользователя вместо этого, и я, кажется, не могу заставить его работать.

Я добавил столбец, строку "имя пользователя" в таблице "пользователи", изменены поля :электронный адрес :имя пользователя в регистрационной форме, и изменили ключ аутентификации при разработке.rb to: имя пользователя но когда я иду, чтобы войти в систему, меня встречает следующее приглашение: "пожалуйста, введите адрес электронной почты адрес".

Что я делаю не так?

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

2 ответа:

В вашем config / initializers / devise.RB раскомментируйте config.authentication_keys = [ :email] и измените его на config.authentication_keys = [ :username ]

Обновление:
Неправильные формы.
Изменить f.email_field на f.text_field

  • прежде всего, убедитесь, что вы выполнили миграцию.

bundle exec rake db:migrate

  • Создание представлений для разработки, в противном случае дивизия будет использовать значения по умолчанию.

rails generate devise:views

  • Измените Devise / views, Как вы хотите (замените поле email на поле username)

  • Перезагрузите веб-сервер

Надеюсь, это поможет!