如何使用 ActiveRecord 创建一个 has_many 没有桥梁的关系 table

How to use ActiveRecord to create a has_many relationship without a bridge table

抱歉,这个在标题中很难表达。所以这就是我想要做的。一个车间有多个分区。每个区正好有一个district_contact(实际上是一个district_contact_id)。我如何使用 ActiveRecord 来模拟 workshop 和 district_contact 之间的关系?我希望能够做到这一点:

Workshop.district_contacts

并获得实际用户 objects 的 collection。现在,我已经使用一个简短的函数完成了它:

  def district_contacts
    district_ids = []
    self.districts.each do |district|
      if district.contact_id
        district_ids << district.contact_id
      end
    end
    User.find(district_ids)
  end

在 Workshop 模型中定义关联:

has_many :districts
has_many :district_contacts, through: disctricts

您的模型关联应如下所示。

class Workshop < ActiveRecord::Base
  has_many :districts
  has_many :district_contacts, through: disctricts
end

class District < ActiveRecord::Base
  belongs_to :workshop
  has_one :district_contract
end