Semplice IRB Domanda per quanto riguarda Conte
-
26-09-2019 - |
Domanda
Ho una classe chiamata Deal.
Deal ha vote_scores.
mi piacerebbe vedere quanti vote_scores sono a Deal che sono maggiori di 2.
La mia ipotesi:
per vote_scores> 2 a Deal contare end
in realtà non lavoro: D
Modifica:
Ho cercato le idee di tutti. Ma nota che:
Deal.vote_scores
non funziona perché vote_scores non è un attributo di Deal, ma piuttosto un attributo di uno dei suoi migliori offerte. Quindi, se ho fatto questo:
Deal.find (1) .vote_scores
sarebbe tornato un #.
vote_scores viene creata un'istanza all'interno del Haml qui:
.deal_summary{:id => "deal_#{deal_view.id}"}
.score
= deal_view.vote_scores
nel modello qui:
def vote_scores
self.votes.inject(0){|sum, vote| sum + vote.value}
end
Soluzione
Se si vuole solo sapere quanti, il codice più efficiente sarà:
Deal.count(:conditions => ["vote_scores > ?", 2])
Questa sarà più veloce in quanto il conteggio viene fatto in SQL piuttosto che in Ruby.
Modifica
D'accordo, siamo in grado di provare questo:
Deal.find(:all).select {|e| e.vote_scores > 2}.count
Ciò restituirà il numero totale di oggetti accordo che ha vote_scores> 2
Speriamo che questo è ciò che si vuole fare.
Altri suggerimenti
Deal.find (: all,: condizioni => [ "? Vote_scores>", 2]). Length
deal = Deal.first #or whatever... Deal.find(10)
deal.votes.count :conditions => ['value > ?', 2]
per tutte le votazioni
Vote.count(:conditions => ['value > ?', 2'])