私は、votes_count を持つビデオ モデルを持っています。私はすでに現在のランクを取得するメソッドを持っています。
def rank
videos = Video.order('votes_count DESC')
videos.index(self)+1
end
より少ないCPUを使用するより簡単なソリューションはありますか?
前もって感謝します
私は、votes_count を持つビデオ モデルを持っています。私はすでに現在のランクを取得するメソッドを持っています。
def rank
videos = Video.order('votes_count DESC')
videos.index(self)+1
end
より少ないCPUを使用するより簡単なソリューションはありますか?
前もって感謝します
現在の動画投票数より多い動画の数を数えるだけです。この数字プラス1があなたのランクになります。
def rank
Video.where('votes_count > #{votes_count}').count + 1
end
最適化操作では、SQL クエリ演算子 MAX を使用でき、作業はデータベース エンジンに転送されます。
def rank
ret = Video.select('max(votes_count) as rank')
ret.rank
end