ホームページ >データベース >mysql チュートリアル >has_many を使用して Rails 3 で最も関連性の高い上位 N 個のレコードを見つける方法

has_many を使用して Rails 3 で最も関連性の高い上位 N 個のレコードを見つける方法

DDD
DDDオリジナル
2024-11-28 04:54:11842ブラウズ

How to Find the Top N Most Associated Records in Rails 3 using has_many?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。