2017-12-21 22 views
0

deviseでレールを使用する。ユーザーテーブルには私は電子メールとフィールドrecord_statusがあります。レコードステータスに「アクティブ」または「削除済み」が含まれますRails電子メールと別のフィールドで認証を行う

電子メールとrecord_status = 'アクティブ'を使用して認証するには、何を変更する必要がありますか?

私はこのコードを用意しています。私の初期化子で

私のユーザモデルで

def self.find_for_database_authentication(warden_conditions) 
    status = 'active' 
    where(:email => warden_conditions[:email], :record_status => warden_conditions[:status]).first 
end 

そのファイルパスを考案ための初期化子があり、ヘルプみんなのため

config.case_insensitive_keys = [:email] 

おかげ

答えて

1

devise.rb rufflyにconfig/initializers/devise.rbです37行目を参照してください。

# config.authentication_keys = [:email] 

今、あなたは、これがユーザーを認証するときにキーが使用されている任意の認証メカニズム 設定のための

config.authentication_keys = [:email, :other_field] 

の構成であることを更新することができます。デフォルトは です:emailです。 [:username、:subdomain]を使用するように設定することができるので、 ユーザを認証するには、両方のパラメータが必要です。それらの パラメータは認証時にのみ使用され、 セッションからは取得されないことを忘れないでください。パーミッションが必要な場合は、それをbeforeフィルタに実装する必要があります。 値が存在しない場合に認証を中止するかどうかを決定するブール値であるハッシュを指定することもできます。

関連する問題