Rails长链模型关联

时间:2012-03-19 13:27:34

标签: ruby-on-rails model-associations rails-models

好吧,我知道如何处理从一个模型(称为ModelA)到第二个模型(ModelB)到第三个模型(ModelC)的关联。但是如果第三个(ModelC)通过第四个(ModelD)与第一个(ModelE)相关联怎么办。

#ModelA 
has_many :model_bs
has_many :model_cs, :trough => :model_bs

#ModelC
has_many :model_ds
has_many :model_es, :trough => model_ds

问题是:如何通过该链获得与特定ModelA记录相关联的ModelE记录集合?

1 个答案:

答案 0 :(得分:2)

model_cs的实例上调用ModelA将返回model_cs的数组。如果您想访问所有model_es,则需要迭代model_cs数组并将这些结果附加到数组或散列。

array1 = @model_a.model_cs.all
array2 = []
array1.each do |x|
  array2 << x.model_es
end

array2现在包含其最终父级为原始model_es的所有model_a