Question

J'ai une classe appelée Deal.

a affaire vote_scores.

Je voudrais voir combien vote_scores sont à Deal qui sont supérieures à 2.

Je pense:

pour vote_scores> 2 à Deal compter fin

ne fonctionne pas vraiment: 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

  

renverrait une #.

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
Était-ce utile?

La solution

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

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

Ce sera plus rapide puisque le comptage se fait en sql plutôt que dans le rubis.

EDIT

D'accord, nous pouvons essayer ceci:

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

Ceci renvoie nombre total d'objet qui a beaucoup vote_scores> 2

Il faut espérer que ce que vous voulez faire.

Autres conseils

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

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

pour tous les crédits

Vote.count(:conditions => ['value > ?', 2'])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top