相当于belongs_to通过rails模型

时间:2014-07-31 22:07:33

标签: ruby-on-rails

我想要做的是获得等同于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(或使用委托调用人员),但我喜欢在一次调用中完成所有操作。

有办法吗?

1 个答案:

答案 0 :(得分:1)

在您的Manufacturer模型中,您可以拥有以下关系:

has_many :machines # You probably already have this one
has_many :factories, through: :machines
has_many :people, through: :factories

假设bobManufacturer。现在,您可以获得所有bob机器存在的工厂中的所有人员。

bob.people

请注意,我在测试时将People模型重命名为Person。您应该尽可能地保持模型名称的单数。