Ruby on rails Rails长链模型关联

Ruby on rails Rails长链模型关联,ruby-on-rails,model-associations,rails-models,Ruby On Rails,Model Associations,Rails Models,我知道如何处理从一个模型(称为ModelA)到第二个模型(ModelB)到第三个模型(ModelC)的关联。但是如果第三个(ModelC)通过第四个(ModelD)与第五个(ModelE)相关联呢 问题是:如何通过该链获取与特定ModelA记录相关联的ModelE记录集合?对ModelA实例调用model\u cs将返回一个model\u cs数组。如果你想访问所有的model_es,你需要迭代model_cs的数组,并将这些结果附加到数组或散列中 array1 = @model_a.model

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


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

ModelA
实例调用
model\u cs
将返回一个
model\u cs
数组。如果你想访问所有的
model_es
,你需要迭代
model_cs
的数组,并将这些结果附加到数组或散列中

array1 = @model_a.model_cs.all
array2 = []
array1.each do |x|
  array2 << x.model_es
end
array1=@model\u a.model\u cs.all
array2=[]
阵列1.每个do | x|

array2我尝试过直接路径a.model\u cs.model\es,但它不能正常工作。我尝试过自己编写查询,但我不是很擅长,而且它看起来太复杂。谢谢,我想了一些类似的东西,但认为有一些更简单的东西。你可以使用
map
缩短代码。以下(未测试)应该可以工作
array=@model_a.model_cs.map{x | x.model_es}
。这也可以做同样的事情,但形式更为简洁。您可以通过使用一些语法糖进一步缩短它:
@model\u a.model\u cs.map(&:model\u es)
。根据您的要求,您可能还需要对结果调用
flant
uniq
array1 = @model_a.model_cs.all
array2 = []
array1.each do |x|
  array2 << x.model_es
end