我的班级S有很多A班,有很多B.
我可以为我的S(S.As)获得所有的A&#39 我可以迭代这个数组并为每个A获得Bs。
类似
S.As.each do |aa|
aa.Bs
end
如果不使用'每个'?
,我该怎么做?答案 0 :(得分:5)
这将在没有each
S.As.collect(&:Bs)
答案 1 :(得分:3)
如果问题出在N + 1个查询中,我建议使用includes
现在为每个As生成一个新查询以获取它的Bs。
如果你这样写:
S.As.includes(:Bs).each do |aa|
aa.Bs
end
您将获得更少的查询,因为所有B都将被预加载。
在这种情况下,map and collect不会改变任何内容。