我的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"
答案 0 :(得分:1)
计划的target.money是什么,是本计划所有措施的所有Targets.money的总和?
您可以尝试以下内容:
Target.order_by( :money => :desc ).map{|target| target.measure }.map{|measure| measure.program }.uniq
祝你好运