ActiveRecord の関連付けを使用して、最もよく聞かれた曲のトップ 5 を取得するにはどうすればよいですか?

DDD
リリース: 2024-11-27 14:23:12
オリジナル
545 人が閲覧しました

How to Retrieve the Top 5 Most Listened-to Songs Using ActiveRecord Associations?

関連付けカウントによる ActiveRecord レコードの並べ替え

Rails 3 では、ActiveRecord フレームワークを使用して、関連テーブルのデータに簡単にアクセスして操作できます。 Song という名前のモデルから最もよく聞かれた上位 5 曲を取得するシナリオを考えてみましょう。曲とリッスンの間に 1 対多の関係を確立する Listen という別のモデルがあります。

望ましい結果を達成するには、モデル内で has_many およびbelongs_to の関連付けを利用できます。名前付きスコープは、複雑なクエリを定義し、アプリケーション全体で再利用するための便利な方法を提供します。実装方法は次のとおりです:

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
ログイン後にコピー

このコードでは:

  • select は取得する列を指定し、計算された listens_count 列を追加します。
  • joins Song と Listen の間の関係を確立します。
  • group は結果を曲 ID ごとにグループ化し、曲の数をカウントします。
  • order は、listens_count の降順で結果を並べます。
  • limit は、最もよく聞かれた上位 5 曲に選択を制限します。

さて、 top5 メソッドを使用すると、目的のデータを簡単に取得できます:

Song.top5 # top 5 most listened songs
ログイン後にコピー

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

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