質問
私はディールと呼ばれるクラスを持っています。
ディールはvote_scoresを持っています。
I 2よりも大きいことをディールしているどのように多くのvote_scores見たいと思います。
私の推測ます:
ディールでvote_scoresのための> 2 カウント 終了
んではない、本当に仕事:D
編集ます:
私は、みんなのアイデアを試してみました。しかしなおます:
vote_scoresはディールの属性ではなく、そのお得な情報の一つの属性ではありませんので、Deal.vote_scores
は仕事をしません。だから私はこれをしなかった場合:
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
解決
あなたはどれだけ多くを知りたい場合は、より効率的なコードは次のようになります。
Deal.count(:conditions => ["vote_scores > ?", 2])
カウントはSQLではなくRubyで行われているので、これは速くなります。
編集
さて、私たちはこれを試すことができます:
Deal.find(:all).select {|e| e.vote_scores > 2}.count
これはvote_scores> 2
を有する取引オブジェクトの総数が返されうまくいけば、あなたが何をしたいのかである。
他のヒント
Deal.find(:すべて:条件=> [ "vote_scores>?"、2])長さ
。deal = Deal.first #or whatever... Deal.find(10)
deal.votes.count :conditions => ['value > ?', 2]
すべての投票のために
Vote.count(:conditions => ['value > ?', 2'])
所属していません StackOverflow