0

我的Program桌子有很多Measures 我的Measure桌子有很多Targets 我的Target桌子有一个名为“”的列

我的 ActiveRecord 查询如下所示:

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

我想定义一个范围,以便查询可以返回其 target.money 值最低的顶级程序。所以我需要编写一个范围并将其应用于该查询,但是我应该如何以及在模型中的何处定义该范围,就像这样?好吧,这行不通,但这就是我所知道的。

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

1 回答 1

1

一个 Program 的 target.money 是什么,这个 Program 的所有措施的所有 Targets.money 的总和?

您可以尝试以下方法:

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

祝你好运

于 2013-03-03T16:15:48.950 回答