我有一个名为Deal的课程。
交易有vote_scores。
我想看看Deal中有多少个vote_scores大于2。
我的猜测:
for vote_scores>交易2 计数 端
不能真正起作用:D
编辑:
我尝试了每个人的想法。但请注意:
Deal.vote_scores
不起作用,因为vote_scores不是Deal的属性,而是其中一个Deals的属性。所以,如果我这样做:
Deal.find(1).vote_scores
会返回#。
vote_scores在haml中实例化:
.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 :(得分:2)
如果你只想知道多少,那么代码效率会更高:
Deal.count(:conditions => ["vote_scores > ?", 2])
这会更快,因为计数是在sql而不是ruby中完成的。
修改强>
好的,我们可以试试这个:
Deal.find(:all).select {|e| e.vote_scores > 2}.count
这将返回具有vote_scores>的交易对象的总数。 2
希望这就是你想要做的。
答案 1 :(得分:0)
Deal.find(:all,:conditions => [“vote_scores>?”,2])。length
答案 2 :(得分:0)
deal = Deal.first #or whatever... Deal.find(10)
deal.votes.count :conditions => ['value > ?', 2]
所有投票
Vote.count(:conditions => ['value > ?', 2'])