Pergunta

Eu tenho uma aula chamada negócio.

Deal tem voto_scores.

Eu gostaria de ver quantos votos estão em acordo com maiores que 2.

Meu palpite :

para voto_scores> 2 no final da contagem de negócios

Realmente não funciona: D

Editar:

Eu tentei as idéias de todos. Mas observe que:

Deal.vote_scores

Não funciona porque o voto_scores não é um atributo de acordo, mas um atributo de um de seus acordos. Então, se eu fiz isso:

Deal.find (1) .vote_scores

retornaria um #.

Vote_scores é instanciado no Haml aqui:

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

no modelo aqui:

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

Solução

Se você só quiser saber quantos, o código mais eficiente será:

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

Isso será mais rápido, pois a contagem é feita no SQL e não no Ruby.

EDITAR

Ok, podemos tentar o seguinte:

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

Isso retornará o número total de objeto de acordo que vote_scores> 2

Espero que seja isso que você quer fazer.

Outras dicas

Deal.find (: todos ,: condições => ["vote_scores>?", 2]). Comprimento

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

para todos os votos

Vote.count(:conditions => ['value > ?', 2'])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top