2010-05-13 121 views
0

我有一個叫做Deal的類。簡單IRB關於計數的問題

交易有vote_scores。

我想看看有多少vote_scores在新政是大於2

我的猜測:

爲vote_scores> 2新政 計數 結束

並沒有真正工作:D

編輯:

我試過每個人的想法。但要注意的是:

Deal.vote_scores

不起作用,因爲vote_scores不是交易的屬性,而是它的優惠之一的屬性。所以,如果我這樣做:

Deal.find(1).vote_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 
+0

交易的has_many vote_scores ???投票得分是多少?我們應該和2比較什麼? vote_score.score> 2 ??? – fl00r 2010-05-13 13:15:02

+0

描述VoteScore模型。它有什麼屬性? – fl00r 2010-05-13 14:20:33

回答

2

如果你只是想知道有多少,更高效的代碼將是:

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

這會更快,因爲計數是在sql中完成的,而不是在ruby中完成的。

編輯

好吧,我們可以試試這個:

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

這將返回具有vote_scores> 2

協約對象總數但願這是你想要做什麼。

+0

我試過了,我在上面添加了一些評論。 – Trip 2010-05-13 14:12:50

+0

看看我編輯的答案,是你想要做什麼? – 2010-05-13 15:12:53

+0

Sooo奇怪!這適用於我的本地,但在我的活服務器上,它返回沒有'count'的方法..那有多奇怪?不管怎麼說,還是要謝謝你! – Trip 2010-05-13 15:20:12

0

Deal.find(:所有,:條件=> [ 「?vote_scores>」,2

vote_scores在這裏HAML內實例化的])長度

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

所有投票

Vote.count(:conditions => ['value > ?', 2']) 
+0

嗯.. undefined方法'票' – Trip 2010-05-13 15:00:30

+0

當然undefined!我已更新評論。您應該首先爲您想要知道的投票數量定義確切的交易 – fl00r 2010-05-13 15:06:55

+0

如果我想查找所有交易的投票數超過2的計數,該怎麼辦? – Trip 2010-05-13 15:14:39