是否可以使用Polymorphic Association来显示不同类型的用户?

时间:2014-02-26 18:17:44

标签: ruby-on-rails activerecord polymorphic-associations

我想问一下我正在做的事情对于我正在制作的应用程序(初级开发级别)是否有意义。

该应用基本上涉及医生,客户和管理员(目前)。每个都有自己的个人资料页面,可以说可以做不同的事情。我还有一个用于注册过程的用户类。

我选择PA的理由是每个人都以用户身份登录,我想将“做医生”的东西与“成为用户”的东西分开。这是个好主意吗?

class User < ActiveRecord::Base
  rolify
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  belongs_to :profile, polymorphic: true

end

class Doctor < ActiveRecord::Base
  has_one :user, as: :profile, dependent: :destroy
  accepts_nested_attributes_for :user

  ## doctor stuff

  delegate :email, :password, to: :user
end

class Client < ActiveRecord::Base
  has_one :user, as: :profile, dependent: :destroy
  accepts_nested_attributes_for :user

  ## client stuff

  delegate :email, :password, to: :user
end

1 个答案:

答案 0 :(得分:0)

对我而言,将人员类型信息(医生,客户等)与用户类型信息分开是非常合理的。您可能需要考虑命名关联人而不是配置文件,但这并不是非常重要。是的,我认为多态关联可能会实现你想要的目标。