2009-09-29 35 views
0

我有这种情况:的has_many和总和named_scope

Stories has many Tasks 
Tasks have an integer called hours_left 

我需要一个命名范围,找到其中的所有任务已大于0时朝故事。

基于 this post

。我写到:

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

我也注意到,如果我删除了:具有=>“sum_amount> 0”条件我得到的所有的故事:那些以0分朝具有属性HOURS_LEFT设置为“0”,但其余的(那些我想要的)有hours_left设为零。 –

回答

0

解决。该代码实际工作中,问题是,它返回nil,仿佛任何的任务有HOURS_LEFT =零和的结果。我验证了hours_left的存在,就这些。