デフォルトでは、devise gem はユーザーのメールアドレスを要求し、それを使用してサインイン (認証) します。
この Railscast の"Customizing Devise"では、電子メールの代わりにユーザー名で認証する方法が明確に説明されています。ユーザー名または電子メールのいずれかの2つの異なる列に対して認証を試みるようにデバイスを構成するにはどうすればよいですか?
デフォルトでは、devise gem はユーザーのメールアドレスを要求し、それを使用してサインイン (認証) します。
この Railscast の"Customizing Devise"では、電子メールの代わりにユーザー名で認証する方法が明確に説明されています。ユーザー名または電子メールのいずれかの2つの異なる列に対して認証を試みるようにデバイスを構成するにはどうすればよいですか?
メソッド find_for_database_authentication(conditions) を定義するだけです。例として、モノギッドで私はそれを行います:
def self.find_for_database_authentication(conditions)
self.where({ :login => conditions[:login] }).first || self.where({ :email => conditions[:login] }).first
end
ああ、すみません、私は十分にグーグルしませんでした。devise wiki に答えがあります: 「ログインまたはメールを使用してログインする」
また、この質問はすでにスタックオーバーフローで尋ねられ、回答されています: 「ユーザー名または電子メールでサインイン」
Rails 2.x と互換性のある self.find_for_authentication メソッドを使用するブログ ディスカッションがあります。