如何以两种方式关联两个模型:很多:通过?

时间:2013-11-13 17:44:09

标签: ruby-on-rails associations

在使用Rails 3.2.15的政治分析应用程序中,我有一个候选模型和一个区域模型。以下是我试图建模的关系细分:

  1. 候选人属于地区,因为他们在特定地区竞选公职。
  2. 一个或多个候选人也可以在其所在地区担任职务。
  3. 一位现任者是该区的“小学校长”。
  4. 我这样想:

    class District
      has_many :candidates
      has_many :candidates, :through => :incumbencies
    end
    
    class Candidate
      belongs_to: District
    end
    
    class Incumbency
      belongs_to :district
      belongs_to :candidate
      # This model has a boolean attribute :is_primary to distinguish primary incumbencies
    end
    

    这是正确的方法,还是会遇到问题?谢谢你的帮助。

    编辑:

    这是一个澄清的例子:

    在1区

    • 候选人1是主要任职者
    • 候选人2是现任
    • 候选人3是候选人
    • 候选人4是候选人

    在第2区

    • 候选人5是候选人
    • 候选人6是候选人

    在第3区

    • 候选人7是主要任职者
    • 候选人8是候选人

1 个答案:

答案 0 :(得分:0)

一切看起来都井井有条,但我相信可能存在一个问题,即Incumbencies属于:候选人,但候选人没有任何在职人员。我认为如果你有以下情况可能会有所改善:

class District
  has_many :candidates
  has_many :incumbencies, :through => :candidates
end

class Candidate
  belongs_to :district
  has_one :incumbency
end

class Incumbency
  belongs_to :district
  belongs_to :candidate
  # This model has a boolean attribute :is_primary to distinguish primary incumbencies
end

我可能会错误地理解你的人际关系,但似乎候选人可能有或没有一个在职人员,而且该地区有很多候选人,其中一些是招聘。