什么是使用多个用户类的巫术(auth)的最佳方法?

时间:2011-11-25 17:37:24

标签: ruby-on-rails class inheritance

我正在寻找两个模型:培训师和客户端。

注册时,这两种类型的模型共享基本的身份验证信息,例如电子邮件和电子邮件。密码。

因此我想使用Sorcery为我进行身份验证,gem默认会创建一个User模型。

通过StackOverflow搜索我知道我可以使用单表继承,大多数人都觉得有问题。

这两种类型的用户是否有更好/更简单的解决方案来共享基本身份验证信息,但是是否包含其角色特定数据的单独模型?


如果我把事情搞混了,我很抱歉。

1 个答案:

答案 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 wikiRailscast on CanCan