好吧,我知道如何处理从一个模型(称为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记录集合?
答案 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
。