ホームページ > データベース > mysql チュートリアル > Ruby on Rails で ActiveRecord を使用して、最もよく聞かれた曲のトップ 5 を効率的に取得するにはどうすればよいですか?

Ruby on Rails で ActiveRecord を使用して、最もよく聞かれた曲のトップ 5 を効率的に取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-27 01:42:09
オリジナル
408 人が閲覧しました

How Can I Efficiently Retrieve the Top 5 Most Listened-To Songs Using ActiveRecord in Ruby on Rails?

ActiveRecord を使用して最も人気のある曲を効率的に取得する

Ruby on Rails では、関連付けられたモデル数に基づいて最も人気のあるレコードを取得することは、共通のタスク。この場合、Song モデルと Listen モデルがあり、各 Listen は Song に属し、各 Song は複数の Listen を持つことができます。最もよく聞かれた上位 5 曲を決定するには、効率的な方法で関連付け情報にアクセスする必要があります。

名前付きスコープの使用

ActiveRecord の名前付きスコープは、強力な機能を提供します。複雑なクエリをカプセル化する方法。これらにより、簡単に呼び出すことができる再利用可能なクエリ条件を作成できます。特定のシナリオでは、Song モデル内で :top5 という名前付きスコープを定義できます:

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)

# Retrieve the top 5 most listened-to songs
songs = Song.top5
ログイン後にコピー

Query Breakdown

  • select は、 result.
  • joins は、Song モデルと Listen モデル間の結合条件を確立します。
  • group は、結果を Song ID ごとにグループ化し、曲の数をカウントします。各曲を聴きます。
  • order に基づいて結果を降順に並べ替えます。
  • limit は、結果を上位 5 曲に制限します。

:top5 という名前付きスコープを呼び出すことで、上位 5 曲のコレクションと関連する視聴回数を取得できるため、必要な曲を抽出するための簡潔かつ効率的な方法が提供されます。データ。

以上がRuby on Rails で ActiveRecord を使用して、最もよく聞かれた曲のトップ 5 を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート