ホームページ >データベース >mysql チュートリアル >has_many を使用して Rails 3 で最も関連性の高い上位 N 個のレコードを見つける方法
Rails 3 ActiveRecord のアソシエーション数によるレコードの順序付け
Rails 3 では、has_many アソシエーションを利用して最も人気のあるレコードを効果的に決定できます。アソシエーション数に基づいて。各 Listen が Song に属している、Listen モデルが関連付けられた Song モデルの例を考えてみましょう。
最もよく聞かれた上位 5 曲を取得するには、名前付きスコープを使用して Song モデル内にスコープを定義できます。
class Song has_many :listens scope :top5, select("songs.id, OTHER_ATTRS_YOU_NEED, count(listens.id) AS listens_count"). joins(:listens). group("songs.id"). order("listens_count DESC"). limit(5) end
このスコープは、名前付きスコープと関連付けの力を組み合わせています。各曲の聴取回数を計算し、その回数に基づいて結果を降順に並べ替え、最もよく聴かれた上位 5 曲に結果セットを制限します。
上位 5 スコープを活用することで、簡単なクエリを使用した最も人気のある曲:
Song.top5 # top 5 most listened songs
以上がhas_many を使用して Rails 3 で最も関連性の高い上位 N 個のレコードを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。