在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中文網其他相關文章!