2010-05-13 6 views
0

J'ai une classe appelée Deal.Simple question IRB concernant le compte

L'action a des scores de vote.

Je voudrais voir combien vote_scores sont en accord qui sont supérieurs à 2.

Je pense:

pour vote_scores> 2 à Deal nombre fin

n'a pas vraiment travail: D

Edit:

J'ai essayé les idées de tout le monde. Mais notez que:

Deal.vote_scores

ne fonctionne pas parce que vote_scores est pas un attribut de Deal, mais plutôt un attribut d'un de ses offres. Donc, si je l'ai fait:

Deal.find (1) .vote_scores

retournerait un #.

vote_scores est instancié dans le haml ici:

.deal_summary{:id => "deal_#{deal_view.id}"} 
.score 
    = deal_view.vote_scores 

dans le modèle ici:

def vote_scores 
    self.votes.inject(0){|sum, vote| sum + vote.value} 
end 
+0

deal has_many vote_scores ??? Et quels paramètres ont voté_score? Que devrions-nous comparer avec 2? vote_score.score> 2 ??? – fl00r

+0

Décrire le modèle VoteScore. Quels attributs a-t-il? – fl00r

Répondre

2

Si vous voulez juste savoir combien, le code plus efficace sera:

Deal.count(:conditions => ["vote_scores > ?", 2]) 

Ce sera plus rapide puisque le comptage est fait en sql plutôt qu'en ruby.

EDIT

D'accord, nous pouvons essayer ceci:

Deal.find(:all).select {|e| e.vote_scores > 2}.count 

Cela renverra nombre total d'objet deal qui a vote_scores> 2

Espérons que c'est ce que vous voulez faire .

+0

J'ai essayé cela, et j'ai ajouté quelques commentaires ci-dessus. – Trip

+0

Jetez un oeil à ma réponse éditée, c'est ce que vous voulez faire? –

+0

Tellement étrange! Cela fonctionne sur mon serveur local mais sur mon serveur live, ça revient à dire qu'il n'y a pas de méthode pour 'compter' ... C'est étrange ça? Merci quand même! – Trip

0

Deal.find (: all,: conditions => [ "? Vote_scores>", 2 .]) longueur

0
deal = Deal.first #or whatever... Deal.find(10) 
deal.votes.count :conditions => ['value > ?', 2] 

pour tous les votes

Vote.count(:conditions => ['value > ?', 2']) 
+0

Hmm .. méthode non définie 'votes' – Trip

+0

bien sûr undefined! J'ai mis à jour le commentaire. Vous devez d'abord définir Deal exact pour ce que vous voulez savoir votes count – fl00r

+0

Que se passe-t-il si je veux connaître le décompte de tous les votes 'votes' ci-dessus 2? – Trip