2013-03-03 93 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