如何使用 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
抱歉,这个在标题中很难表达。所以这就是我想要做的。一个车间有多个分区。每个区正好有一个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