Rails select children 的全部 children

Rails select all children of children

我的classS有很多classA谁有很多B

我的 S 可以得到全 A (S.As) 我可以遍历这个数组并为每个 A 获得 B。

类似于

S.As.each do |aa| 
    aa.Bs
end 

如何在不使用 'each' 的情况下完成同样的操作?

这将在没有 each

的情况下在一行中工作
S.As.collect(&:Bs)

如果问题出在 N+1 查询上,我建议使用 includes

现在为每个 A 生成一个新查询以获取它的 B。

如果这样写:

S.As.includes(:Bs).each do |aa| 
    aa.Bs
end 

你会得到更少的查询,因为所有 B 都将被预加载。

map 和 collect 在这种情况下不会改变任何东西。