我们在控制器中构建了一些对象:
@sites = Site.find(:all, :conditions => conditions, :order => 'group_id ASC')
然后在视图中(目前),我们正在做类似的事情:
@sites.each do |site|
%p Site Name
= site.name
- actual = site.estimates.where('date<?', Date.today).sum(:actual_cost)
%p
= actual
end
基本上就是这样。
当然,这会触发对网站的查询,然后返回对N个网站的查询。我知道有关@sites = Site.find(:all,:include =&gt;:估计)的热切加载关联,但在这种情况下它并不重要,因为我们在查询上执行SUM,这看起来很特殊
我如何急切加载SUM,以至于我没有得到所有疯狂的查询?目前已超过600 ...
答案 0 :(得分:0)
提供您的条件&amp;仅在此查询中排序,这会将结果推送到哈希。
sites = Site.includes(:estimates).where('estimates.date < ? ', Date.today)
.order('sites.id ASC')
actual = 0
sites.map { |site|
site.estimates.map { |estimate| actual = actual + estimate.actual_cost }
}
根据你的解释,我假设actual_cost是估计表中的一列。