【问题标题】:Joining nested associations, group and order by count加入嵌套关联,按计数分组和排序
【发布时间】:2016-07-28 17:29:50
【问题描述】:

我有嵌套模型结构:

class Forum < ActiveRecord::Base
  has_many :topics

class Topic < ActiveRecord::Base
  has_many :posts
  belongs_to :forum

class Post < ActiveRecord::Base
  belongs_to :topic
  has_many :post_links
  has_many :links, ->{ uniq }, through: :post_links, dependent: :destroy

class PostLink < ActiveRecord::Base
  belongs_to :post
  belongs_to :link

class Link < ActiveRecord::Base
  has_many :post_links
  has_many :posts, ->{ uniq }, through: :post_links, dependent: :destroy

所以我想获取所有帖子中的链接,这些帖子在论坛中 id = 1 的主题中

并按此论坛中出现的次数降序排列。

因此,如果我在论坛的某些帖子中出现 5 次 youtube.com 且 id = 1,并且出现 10 次 google.com,那么我想要类似的内容:

id,name,mentions_count
1,google.com,10
2,youtube.com,5

【问题讨论】:

  • 本论坛所有帖子中的链接提及次数。
  • 按链接数排序论坛 1 中的帖子?
  • 我编辑了我的 qustion 以使其更准确。

标签: ruby-on-rails postgresql ruby-on-rails-4


【解决方案1】:
Forum.where(id: 1).joins(topics: [posts: [:links]]).order("count_all DESC").group("links.host").count 
=>  {"youtube.com"=>5, "google.com"=>2}

我假设您的链接表中有主机列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多