首頁 > 資料庫 > mysql教程 > 如何在 Rails 3 中按關聯計數對 ActiveRecord 結果排序?

如何在 Rails 3 中按關聯計數對 ActiveRecord 結果排序?

Linda Hamilton
發布: 2024-11-26 13:18:11
原創
854 人瀏覽過

How to Order ActiveRecord Results by Association Count in Rails 3?

按關聯計數排序ActiveRecord 結果

在Rails 3 中,您可能會遇到需要從模型中檢索資料並根據關聯數量對結果進行排序的場景另一個模型中的關聯記錄。這可以使用 ActiveRecord 的命名範圍來實現。

考慮具有許多關聯監聽記錄的模型歌曲範例。要尋找最常聽的五首歌曲,您可以使用命名範圍方法:

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 songs based on listen count
Song.top5
登入後複製

在此命名範圍中,我們使用select 方法來包含感興趣的欄位以及自訂列Listens_count 欄位表示監聽計數。 joins 方法建立了 Song 和 Listen 模型之間的關聯。 group 方法按 Song.id 將結果分組,以聚合每首歌曲的聆聽次數。最後,order 和 limit 方法按聆聽次數降序對結果進行排序,並將輸出限制為前五首歌曲。

以上是如何在 Rails 3 中按關聯計數對 ActiveRecord 結果排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板