2

ユーザータイプに応じてauthentication_keys構成を条件付きにする方法はありますか?

たとえば、私のユーザーモデルには、ビットマスク属性の値によって定義された2つの異なるユーザー(標準ユーザーと学生)があります。usernameとschool_idに基づいて学生を認証したい。標準ユーザーは、school_idの値を持っている必要はありません。これに対応するために、2種類のログイン画面があります。1つは学生用、もう1つは標準ユーザー用です。生徒のログイン画面には、学校に対して生徒を認証する非表示のschool_idフィールドがあります。

私のデバイス構成ファイルには、次のものがあります。

config.authentication_keys = [ :username, :school_id ] 

ただし、この設定では、標準ユーザーはログインできません。認証されるすべてのユーザーのschool_idを想定していると思います。認証キーを条件付きにすることは可能ですか?または、school_idにallow_blankオプションを指定しますか?標準のユーザーと学生を同じモデルに保ちたいと思っています。

4

1 に答える 1

2

はい、モデルで次のことを行うだけです。

class User < ActiveRecord::Base
  devise :database_authenticatable, authentication_keys: [:username]
end

class Student < ActiveRecord::Base
  devise :database_authenticatable, authentication_keys: [:username, :student_id]
end
于 2012-10-26T10:22:51.000 に答える