我正在寻找两个模型:培训师和客户端。
注册时,这两种类型的模型共享基本的身份验证信息,例如电子邮件和电子邮件。密码。
因此我想使用Sorcery为我进行身份验证,gem默认会创建一个User模型。
通过StackOverflow搜索我知道我可以使用单表继承,大多数人都觉得有问题。
这两种类型的用户是否有更好/更简单的解决方案来共享基本身份验证信息,但是是否包含其角色特定数据的单独模型?
如果我把事情搞混了,我很抱歉。
答案 0 :(得分:1)
您的两位用户拥有哪种“角色特定数据”?
我处于一个非常类似的情况,就像你在我正在开发的应用程序中一样。我选择使用CanCan的基于角色的方法。
class User < ActiveRecord::Base
has_one :client_profile # or whatever a client has here
has_one :trainer_profile # or whatever a trainer has here
end
然后,你将定义你的能力
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # anonymous user
if user.is? :trainer
can :create, TrainerProfile
# some other trainer specific roles here, like editing his/her profile
elseif user.is? :client
can :create, ClientProfile
# some other client specific roles here, like editing his/her profile
end
end
end
当然,上面的代码假设是? User
类上检查用户角色的方法。
有关CanCan的更多信息,请访问CanCan wiki,Railscast on CanCan。