複数のユーザー識別子を許可することについては、ここにリンクしている Devise wiki で説明されています。
更新: ただし、私が理解しているように、何らかの理由で 2 つの別個の資格情報セット (userid/pw1 と email/pw2) が必要です。
あなたの質問に対する答えは、「Devise で達成することは可能ですが、Devise を変更することは、自分で作成するよりもはるかに多くの労力を必要とする」ということだと思います。リンクを見ると、同じパスワードに対してユーザーIDまたは電子メールのいずれかを受け入れるという単純な変更を行うには、実際にはかなりの作業が必要です。要件を実装すると、さらに複雑になります。
独自のシステムをゼロから実際に作成しない限り、Devise または Rails のビルトインはhas_secure_password
どちらも、パスワードを保持する属性の名前 (つまり、 という名前) についていくつかの仮定を行いますpassword
。また、認証情報とこの属性を含む (単一の) モデルがあるという前提がありますが、 2 つのモデル (おそらく両方とも) に属するモデルを使用できない理由はわかりません。User
各モデルは、ユーザーが使用したメソッドの属性を暗号化、保存、および検証する基本的な機能を提供しますが、他のすべての機能は親 User レコード、およびそのコントローラーとビューによって提供されます。User モデルのいくつかの単純なロジックは、どのメソッドが使用されているかを判断し、その機能を適切なサブモデルにファームオフします。
ええ、それは可能has_secure_password
です。あなたの珍しいケースでは、より簡単になることをお勧めします。
しかし、質問する価値はあるかもしれません。もし私がこの状況に遭遇した最初の人なら、既存の慣習やアプローチに従う私の要件を満たす代替手段があるかもしれません。たとえば、これは複数の無関係なサービスの認証を提供する「シングル サインオン」インターフェイスですか? もしそうなら、それは検索するものかもしれません。