deviseでモデルごとに認証の方法を変える
devise使ってて、モデルごとに認証の方法を変えるのってできるのー?って思ったのでメモ。
やりたいこと
Userモデル -> e-mailとパスワードでログイン認証
Agentモデル -> ログインIDとパスワードでログイン認証
やりかた
Userモデルはまあそのまま
ここでAgentモデルを色々といじる
まず、migrationファイル
#db/migration/#{migration_hash}.rb class ChangeAgentDataTypes < ActiveRecord::Migration def up add_index :agents, :email, :unique => false end def down end end
:unique => falseにする。
ここで設定しないと、弾かれちゃう。
次にmodelのファイル
#agent.rb devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:login_key] #これを自分が認証に使いたいものに変える
よくいろんなところで
config/initializer/devise.rb
を変更しましょうとか出てくるけど、ここを変えちゃうと全部が変わっちゃうので、個別に変えるときはこうする。