Frage

Ich habe eine Klasse namens Deal.

Deal hat vote_scores.

Ich möchte sehen, wie viele vote_scores in Deal sind, die größer als 2 ist.

Meine Vermutung:

für vote_scores> 2 in Deal Anzahl Ende

funktioniert nicht wirklich: D

Edit:

Ich habe versucht, alle Ideen. Aber beachten Sie, dass:

  
    

Deal.vote_scores

  

funktioniert nicht, weil vote_scores kein Attribut von Deal ist, sondern ein Attribut eines seiner Angebote. Also, wenn ich das tue:

  
    

Deal.find (1) .vote_scores

  

würde # zurückzukehren.

vote_scores instanziiert im haml hier:

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

im Modell hier:

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

Lösung

Wenn Sie nur wissen wollen, wie viele, desto effizienter Code wird sein:

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

Dies wird schneller, da die Zählung in SQL getan wird und nicht in Ruby.

Bearbeiten

Okay, wir können dies versuchen:

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

Dies wird zurückkehren Gesamtzahl der Deal-Objekt, das hat vote_scores> 2

Wir hoffen, dass das, was Sie tun wollen.

Andere Tipps

Deal.find (: alle,: conditions => [ "? Vote_scores>", 2]). Länge

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

für alle Stimmen

Vote.count(:conditions => ['value > ?', 2'])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top