Mysql 如何懒加载或急加载关联表的和?

Mysql 如何懒加载或急加载关联表的和?,mysql,ruby-on-rails-3,activerecord,eager-loading,Mysql,Ruby On Rails 3,Activerecord,Eager Loading,我们在控制器中构建了一些对象: @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(:actua

我们在控制器中构建了一些对象:

  @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=>:estimates的即时加载关联,但在这种情况下,这并不重要,因为我们正在对查询进行求和,这看起来很特殊

我怎样才能不去想那些疯狂的问题呢?目前超过600…

仅在此查询中提供您的条件和顺序,这将把结果推送到哈希中

根据您的解释,我假设实际成本是估算表中的一列

    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 }
}