按关联计数排序 ActiveRecord 记录
在 Rails 3 中,您可以使用 ActiveRecord 框架轻松访问和操作相关表中的数据。考虑这样的场景:您想要从名为 Song 的模型中检索最常听的 5 首歌曲。您有一个名为 Listen 的单独模型,它在歌曲和收听之间建立了一对多关系。
要实现所需的结果,您可以在模型中利用 has_many 和 Belongs_to 关联。命名范围提供了一种定义复杂查询并在整个应用程序中重用它们的便捷方法。下面是实现它的方法:
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
在此代码中:
现在,您可以使用top5方法轻松检索所需数据:
Song.top5 # top 5 most listened songs
以上是如何使用 ActiveRecord 关联检索最常听的 5 首歌曲?的详细内容。更多信息请关注PHP中文网其他相关文章!