我想要做的是获得等同于belongs_to的通过。我的理由是,在遍历我的模型结构时,我不想生成大量的db调用。
我的伪格式示例:
Manufacturer
has_many: machines
Factory
has_many: machines
has_many: people
Machine
belongs_to: manufacturer
belongs_to: factory
People
belongs_to: factory
我希望从制造商记录开始,以获得工厂中存在这些制造商机器的所有人员。
我能想到的唯一方法是通过遍历manufacturer.machines.each,并调用factory.people(或使用委托调用人员),但我喜欢在一次调用中完成所有操作。
有办法吗?
答案 0 :(得分:1)
在您的Manufacturer
模型中,您可以拥有以下关系:
has_many :machines # You probably already have this one
has_many :factories, through: :machines
has_many :people, through: :factories
假设bob
是Manufacturer
。现在,您可以获得所有bob
机器存在的工厂中的所有人员。
bob.people
请注意,我在测试时将People
模型重命名为Person
。您应该尽可能地保持模型名称的单数。