您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Rails 3 ActiveRecord:顺序和按关联计数分组

Rails 3 ActiveRecord:顺序和按关联计数分组

您正在寻找的内容与标准ActiveRecord查询的映射并不理想。

您可以调用直接sql来最有效地获取所需内容

subquery = Song.joins(:listens).group(:id).select("songs.id, COUNT(*) as listen_count).to_sql
raw = Song.connection.select_rows("SELECT listen_count, COUNT(*) FROM (#{subquery}) t GROUP BY listen_count ORDER BY listen_count DESC")
song_listen_distribution = Hash[raw]

另外,您可以使用ActiveRecord查找所有歌曲的计数,然后在ruby中建立发行字典:

song_listens = Song.joins(:listens).group(:id).count
song_listen_distribution = song_listens.group_by{|n| n.last}.
    each_with_object({}){|(k, g), h| h[k] = g.size}
其他 2022/1/1 18:30:55 有431人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶