RoR Devise: войдите под именем пользователя ИЛИ по электронной почте - PullRequest
59 голосов
/ 08 июня 2010

Как лучше всего разрешить пользователям входить в систему со своим адресом электронной почты ИЛИ своим именем пользователя? Я использую warden + devise для аутентификации. Я думаю, что это, вероятно, не будет слишком сложно сделать, но я думаю, мне нужен какой-то совет здесь, где разместить все необходимое. Возможно, разработчик уже предоставляет эту функцию? Как в config / initializers / devise.rb, вы должны написать:

config.authentication_keys = [ :email, :username ]

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

Username or Email:
[____________________]

Password:
[____________________]

[Sign In]

Ответы [ 11 ]

1 голос
/ 14 октября 2011

Если вы используете MongoDB (с MongoId), вам нужно сделать запрос по-другому:

  def self.find_for_database_authentication(conditions={})
    self.any_of({name: conditions[:email]},{email: conditions[:email]}).limit(1).first
  end

, просто чтобы он был где-то в сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...