下面的示例显示了冗余,因为数据库被查询两次完全相同的事情。
.div1
- towns.each do |town|
= town.name
- town.residents.where(:age => 14).each do |r|
%p= r.name
.div2
- towns.each do |town|
= town.name
- town.residents.where(:age => 14).each do |r|
%p= r.name
无论如何我可以简化这个吗?
答案 0 :(得分:1)
实际上Rails应该缓存查询。它不会向数据库触发两次。
答案 1 :(得分:0)
您可以通过包含或预加载关系对象来优化查询。
516
16
8
512, 516
1: 448
2: 464
3: 480
4: 496
这将提前选择城镇的居民记录
如果您只是寻找14岁以下居民的城镇
towns = towns.preload(:residents)