Rails - 使用多个has_many through:关联加入相同的两个模型。冗余has_many通过:

时间:2014-01-09 22:04:38

标签: sql ruby-on-rails database associations

协会人员和公司通过就业和面试是否是不良做法? 特别是为什么? 这个答案是否适用于一般的数据库,而不仅仅是铁路?

示例:

employment.rb

class Employment < ActiveRecord::Base
    belongs_to :people
    belongs_to :companies
end

interview.rb

class Interview < ActiveRecord::Base
    belongs_to :people
    belongs_to :companies
end

person.rb

class Person < ActiveRecord::Base
    has_many :employments
    has_many :interviews
    has_many :companies, through: :employments
    has_many :companies, through: :interviews
end

company.rb

class Company < ActiveRecord::Base
    has_many :employments
    has_many :interviews
    has_many :companies, through: :employments
    has_many :companies, through: :interviews
end

个人和公司通过就业相关联,但也通过面试冗余。

1 个答案:

答案 0 :(得分:1)

让两个模型具有多个关联,包括同一类型的多个关联,没有任何问题。你会想给这些协会提供唯一的名字 - 但是当你打电话给(例如)@person.companies时,你就不会知道你会得到什么 - 公司通过就业,或公司通过面试。

我相信这个问题有一个不错的例子:ruby on rails has_many :through association which has two columns with same model