Убедитесь, что вы уже добавили поле имени пользователя и добавили имя пользователя в attr_accessible.
Создайте виртуальный атрибут входа в Users
1) Добавить логин как attr_accessor
# Virtual attribute for authenticating by either username or email
# This is in addition to a real persisted field like 'username'
attr_accessor :login
2) Добавить логин для attr_accessible
attr_accessible :login
Скажите Devise для использования: войдите в аутентификационные ключи
Измените config / initializers / devise.rb, чтобы иметь:
config.authentication_keys = [ :login ]
Перезаписать Devise метод find_for_database_authentication в Users
# Overrides the devise method find_for_authentication
# Allow users to Sign In using their username or email address
def self.find_for_authentication(conditions)
login = conditions.delete(:login)
where(conditions).where(["username = :value OR email = :value", { :value => login }]).first
end
Обновите ваши взгляды
Убедитесь, что в вашем проекте есть представления Devise, чтобы вы могли настроить их
remove <%= f.label :email %>
remove <%= f.email_field :email %>
add <%= f.label :login %>
add <%= f.text_field :login %>