2013-03-03 74 views
0

Program表有很多MeasuresMeasure表有许多TargetsTarget表有一个称为“”列范围深加入

我的ActiveRecord的查询看起来是这样的:

@programs2 = Program.includes([measures: :target]).where('organization_id = 1').limit(2) 

我想定义一个范围,以便查询可以返回顶级程序,它们的target.money值是最低的。所以我需要编写一个范围并将其应用于该查询,但是模型中的How和Where应该如何定义该范围?那么这将无法正常工作,但这是我所知道的。

scope :top5, :joins => [:measures, :targets] , :order => "money DESC" 

回答

1

一个程序的target.money是什么,这个程序的所有目标的所有Targets.money的总和是多少?

你可以尝试这样的:

Target.order_by(:money => :desc).map{|target| target.measure }.map{|measure| measure.program }.uniq 

好运

+0

target.money:不,它只是一个数字,我做了这么张贴一些表和字段名称,因此它们也可能不在实践中非常有意义。 – DarkNightFan 2013-03-03 16:41:20