Подтвердить что ты не робот

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

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

Я добавил столбец строки, "имя пользователя" в таблицу пользователей, изменил поля с: email на: имя пользователя в форме входа и изменил ключ аутентификации в 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 ]
4b9b3361

Ответ 1

В вашем config/initializers/devise.rb uncomment config.authentication_keys = [ :email] и измените его на config.authentication_keys = [ :username ]

Обновление:
 Ваша форма неверна.
Измените f.email_field на f.text_field

Ответ 2

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

bundle exec rake db:migrate

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

rails generate devise:views

  • Измените настройки/представления как хотите (заменив поле электронной почты на поле имени пользователя)

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

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