首页 > 数据库 > mysql教程 > 如何使用 has_many 查找 Rails 3 中前 N 个最相关的记录?

如何使用 has_many 查找 Rails 3 中前 N 个最相关的记录?

DDD
发布: 2024-11-28 04:54:11
原创
841 人浏览过

How to Find the Top N Most Associated Records in Rails 3 using has_many?

Rails 3 ActiveRecord 中按关联计数排序记录

在 Rails 3 中,您可以利用 has_many 关联来有效确定最受欢迎的记录基于关联计数。考虑具有关联 Listen 模型的 Song 模型的示例,其中每个 Listen 都属于一首歌曲。

要检索最常听的 5 首歌曲,您可以使用命名范围在 Song 模型中定义一个范围:

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)
end
登录后复制

这个作用域结合了命名作用域和关联的力量。它会计算每首歌曲的收听次数,并根据该次数对结果进行降序排序,并将结果集限制为收听次数最多的前 5 首歌曲。

通过利用 top5 范围,您可以方便地获取使用简单查询即可查询最流行的歌曲:

Song.top5 # top 5 most listened songs
登录后复制

以上是如何使用 has_many 查找 Rails 3 中前 N 个最相关的记录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板