首页 > 数据库 > mysql教程 > 如何在 Rails 3 中按关联计数对 ActiveRecord 结果排序?

如何在 Rails 3 中按关联计数对 ActiveRecord 结果排序?

Linda Hamilton
发布: 2024-11-26 13:18:11
原创
799 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板