0

Dealというクラスがあります。

ディールにはvote_scoresがあります。

2より大きいdealのvote_scoresがいくつあるかを確認したいと思います。

私の推測 :

取引カウント終了時のvote_scores>2の場合

実際には機能しません:D

編集:

みんなのアイデアを試してみました。ただし、次の点に注意してください。

Deal.vote_scores

vote_scoresはDealの属性ではなく、Dealの1つの属性であるため、機能しません。だから私がこれをした場合:

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
4

3 に答える 3

2

いくつだけ知りたい場合は、より効率的なコードは次のようになります。

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

カウントはルビーではなくSQLで行われるため、これはより高速になります。

編集

さて、これを試すことができます:

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

これにより、vote_scores>2の取引オブジェクトの総数が返されます。

うまくいけば、それがあなたがやりたいことです。

于 2010-05-13T13:39:53.617 に答える
0

Deal.find(:all、:conditions => ["vote_scores>?"、2])。length

于 2010-05-13T13:12:06.080 に答える
0
deal = Deal.first #or whatever... Deal.find(10)
deal.votes.count :conditions => ['value > ?', 2]

すべての投票について

Vote.count(:conditions => ['value > ?', 2'])
于 2010-05-13T14:53:08.877 に答える