有没有办法根据用户类型使authentication_keys配置成为条件?
例如,在我的用户模型中,我有两个不同的用户,标准用户和学生,由bitmask属性的值定义。我想根据用户名和school_id对学生进行身份验证。标准用户不必拥有school_id的值。为了适应这种情况,我有两种类型的登录屏幕,一种用于学生,另一种用于标准用户。学生登录屏幕有一个隐藏的school_id字段,可以向他们的学校验证。
在我的设计配置文件中,我有:
config.authentication_keys = [ :username, :school_id ]
然而,使用此设置标准用户无法登录,我的猜测是,它期望所有用户通过身份验证的school_id。是否可以使身份验证密钥有条件?或者为school_id提供allow_blank选项?我希望能够将标准用户和学生保持在同一模型中。
答案 0 :(得分: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