具有三级深度连接的范围

时间:2013-03-03 08:18:14

标签: ruby ruby-on-rails-3.2 rails-activerecord

我的Program表有很多Measures 我的Measure表有很多Targets 我的Target表格中有一栏名为" money "

我的ActiveRecord查询如下所示:

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

我想定义一个范围,以便查询可以返回其target.money值最低的顶级程序。所以我需要编写一个范围并将其应用于该查询,但是我应该在模型中的方法和位置定义该范围,类似这样的东西?好吧,这不会起作用,但就像我所知道的那样。

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

1 个答案:

答案 0 :(得分:1)

计划的target.money是什么,是本计划所有措施的所有Targets.money的总和?

您可以尝试以下内容:

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