Простой вопрос IRB относительно количества

StackOverflow https://stackoverflow.com/questions/2826985

  •  26-09-2019
  •  | 
  •  

Вопрос

У меня есть класс под названием сделку.

Сделка имеет голосование_scores.

Я хотел бы видеть, сколько голосовать_scores в сделке, которые превышают 2.

Мое предположение :

Для голосования_scores> 2 в конце сделки

На самом деле не работает: D

Редактировать:

Я попробовал все идеи. Но обратите внимание, что:

Deam.vote_scores.

Не работает, потому что голосование_scores не является атрибутом сделки, а атрибут одного из его сделок. Так что, если я сделал это:

Deam.find (1) .vote_scores

вернется #.

Голосование_scores создается в Хамле здесь:

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

В модели здесь:

def vote_scores
  self.votes.inject(0){|sum, vote| sum + vote.value}
end
Это было полезно?

Решение

Если вы просто хотите знать, сколько будет более эффективным кодом:

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

Это будет быстрее, так как подсчет выполняется в SQL, а не в Ruby.

РЕДАКТИРОВАТЬ

Хорошо, мы можем попробовать это:

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

Это вернет общее количество объектов DEAL, которое имеет голосование_scores> 2

Надеюсь, что вы хотите сделать.

Другие советы

Deam.find (: все: Условия => ["" Голосование_scores>? ", 2]). Длина

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

Для всех голосов

Vote.count(:conditions => ['value > ?', 2'])
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top