Activerecord 有多个和总和,命名为范围

Activerecord 有多个和总和,命名为范围,activerecord,group-by,sum,join,named-scope,Activerecord,Group By,Sum,Join,Named Scope,我有这样的情况: Stories has many Tasks Tasks have an integer called hours_left 我需要一个命名范围来查找其所有任务剩余时间超过0小时的故事 基于。我写道: class Story has_many :tasks named_scope :uncompleted, { :joins=>["INNER JOIN tasks ON tasks.story_id = stories.id"], :group

我有这样的情况:

Stories has many Tasks
Tasks have an integer called hours_left
我需要一个命名范围来查找其所有任务剩余时间超过0小时的故事

基于。我写道:

class Story
  has_many :tasks
  named_scope :uncompleted, { 
    :joins=>["INNER JOIN tasks ON tasks.story_id = stories.id"],
    :group=> 'stories.id',
    :select=>'stories.*, SUM(tasks.hours_left) AS sum_amount',
    :having=>"sum_amount > 0"
  }
end
但是Story.uncompleted返回一个空数组


你能帮我吗?

解决了。这段代码实际上是有效的,问题是如果任何任务的剩余小时数为0,那么它将返回nil作为求和的结果。我验证了hours\u left的存在,仅此而已。

我还注意到,如果我删除:having=>sum\u amount>0条件,我会得到所有故事:剩下0个小时的故事的属性hours\u left设置为0,而我想要的其他故事的属性hours\u left设置为零。