首頁 >資料庫 >mysql教程 >如何在 Ruby on Rails 中使用 ActiveRecord 高效檢索最常聽的 5 首歌曲?

如何在 Ruby on Rails 中使用 ActiveRecord 高效檢索最常聽的 5 首歌曲?

Barbara Streisand
Barbara Streisand原創
2024-11-27 01:42:09373瀏覽

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。為了確定最常聽的五首歌曲,我們需要以有效的方式存取關聯資訊。

使用命名範圍

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

查詢細分

  • select指定要包含在
  • joins 建立 Song 和 Listen 模型之間的連接條件。
  • group 按 Song ID 將結果分組,以統計歌曲的數量收聽每首歌曲。
  • order 依照下列內容依降序對結果進行排序收聽計數。
  • limit 將結果限制為前 5 首歌曲。

透過呼叫:top5 命名範圍,我們可以獲得排名前五的歌曲以及相關收聽次數的集合,提供一種簡潔有效的方法來提取所需的數據。

以上是如何在 Ruby on Rails 中使用 ActiveRecord 高效檢索最常聽的 5 首歌曲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn