Я знаю, что уже есть тонны учебников, которые объясняют, как это сделать, но я слишком много времени трачу, пытаясь заставить его работать без успеха ...
Официальный документ: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-using-their-username-or-email-address
В официальном документе они объясняют, как войти, используя имя пользователя ИЛИ адрес электронной почты. Я просто хочу войти, используя только имя пользователя.
Что я сделал:
1. rails generate migration add_username_to_users username:string
2. rake db:migrate
3. rails generate devise:views
Мое приложение / models / user.rb: (я только добавил: имя пользователя в attr_accessible)
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
# Setup accessible (or protected) attributes for your model
attr_accessible :username, :email, :password, :password_confirmation, :remember_me
end
Мой конфиг / инициализаторы / devise.rb:
...
config.authentication_keys = [ :username ]
...
Мое приложение / views / devise / session / new.html.erb:
...
<p><%= f.label :username %><br />
<%= f.text_field :username %></p>
...
Я верю, что это все, что нужно изменить, но он просто скажет "неверный адрес электронной почты или пароль".
Спасибо за вашу помощь ..!