1

私は、votes_count を持つビデオ モデルを持っています。私はすでに現在のランクを取得するメソッドを持っています。

def rank
  videos = Video.order('votes_count DESC')
  videos.index(self)+1
end

より少ないCPUを使用するより簡単なソリューションはありますか?

前もって感謝します

4

2 に答える 2

1

現在の動画投票数より多い動画の数を数えるだけです。この数字プラス1があなたのランクになります。

def rank
  Video.where('votes_count > #{votes_count}').count + 1
end
于 2012-08-02T20:46:11.297 に答える
1

最適化操作では、SQL クエリ演算子 MAX を使用でき、作業はデータベース エンジンに転送されます。

def rank
  ret =  Video.select('max(votes_count) as rank')
  ret.rank
end
于 2012-08-03T00:18:23.857 に答える