使用 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
查询细分
通过调用 :top5 命名范围,我们可以获取排名前五的歌曲以及相关收听次数的集合,提供一种简洁有效的方法来提取所需的数据。
以上是如何在 Ruby on Rails 中使用 ActiveRecord 高效检索最常听的 5 首歌曲?的详细内容。更多信息请关注PHP中文网其他相关文章!