2009-09-29 9 views
0

j'ai cette situation:has_many et somme named_scope

Stories has many Tasks 
Tasks have an integer called hours_left 

je besoin d'un champ nommé de trouver des histoires qui toutes ses tâches a plus de 0 heures gauche.

Basé sur this post. J'ai écrit ceci:

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 

Mais Story.uncompleted renvoie un tableau vide.

Pouvez-vous m'aider?

+0

J'ai aussi remarqué que si je supprime la condition: having => "somme_mount> 0", toutes les histoires sont: celles avec 0 heures restantes ont l'attribut hours_left mis à "0" mais le reste (ceux que je veux) hours_left mis à zéro. –

Répondre

0

Résolu. Ce code fonctionne réellement, le problème est qu'il renvoie zéro comme résultat de la somme si l'une des tâches a hours_left = nil. J'ai validé la présence de hours_left et c'est tout.