如何将某个子类型

时间:2017-04-14 22:53:41

标签: ruby-on-rails-4 activerecord

我有一些模型有很多关系。

class Participant < ActiveRecord::Base
  has_many :participant_scores
  has_many :groups, through: :participant_scores
end

class Group < ActiveRecord::Base
  has_many :participant_scores
  has_many :participants, through: :participant_scores
end

class ParticipantScore < ActiveRecord::Base
  belongs_to :group
  belongs_to :participant
end

我需要有不同类型的组,其中参与者只能是该类型中的1个成员。

例如,在公司中有多个部门和地点,但一个人只能与一个部门和一个地点相关联。另一方面,有一般的分组,没有限制,例如,可以有许多社交俱乐部,一个人可以是任何数量的成员。

分组在行为上都是一样的,唯一的区别是有些人只有1的成员有限制。

我打算使用单表继承,但我还没弄明白如何将它限制为只有1个关联。 Parhaps添加type列,然后使用验证进行限制? 使用范围?

这些似乎都不是最佳的,我怎样才能最好地实现这一目标?

1 个答案:

答案 0 :(得分:0)