これを行うには、モデルを正しく設定して、メールの関連付けを作成するだけです。また、ユーザーfinderメソッドをdeviseからオーバーライドする必要があります。これを行うには、self.find_for_database_authentication(条件)メソッドをオーバーライドする必要があります。
class User < ActiveRecord::Base
has_many :emails
accepts_nested_attributes_for :emails
...
def self.find_for_database_authentication(conditions)
email = conditions.first
self.where(:emails=>{:name=>email})
end
end
また、devise.rbに電子メールを追加して使用する必要があります。
Devise.setup do |config|
...
config.authentication_keys = [ :emails ]
...
end
私はコードを実行していない、多分それはいくつかのエラーがありますが、私はあなたがアイデアを得ることを願っています。何かが明確でないことを私に教えてください。 乾杯。
更新
最初の質問:はい、工夫の方法が自動的にオーバーライド蜂ます。
2番目の質問:あなたが持っている必要がありyour_application_path /設定/初期化子/ devise.rb 私はあなたが工夫の宝石を使用する場合、それが作成だと思います。あなたが持っていない場合は、それを作成することができます。私が指定した内容は良いです。ドット(...)を省略してください。
これは古い投稿ですが、ユーザー登録時に何をしましたか? (例:関連する電子メールレコードを作成するbefore_saveフィルタ) – robertwbradford