2015-04-07 111 views
2

三種型號如何GROUP BY和獲得的has_many計數:通過軌道

  • 標籤
  • 帖子
  • PostTags

標籤具有通過PostTags

很多帖子等什麼我需要的是獲得具有最大數量的帖子的所有標籤的名稱,其數量爲

+0

ATLEAST給我們遷移文件,查看數據庫列:) –

+0

@arup:認爲它是非常基本的東西 tag => id,name, post => id,description, post_tags => tag_id,post_id – SRDP

+0

您正在使用哪個數據庫客戶端? –

回答

2

下面的代碼應該滿足您的需求:

Tag 
    .select('tags.name, COUNT(posts.*) AS posts_count') 
    .joins(:posts) 
    .order('posts_count DESC') 
    .group('tags.name') 
    .group_by(&:posts_count) 
+0

這是不正確的。 'Tag'和'Post'沒有直接映射。 –

+0

是的..所以你在哪裏使用了連接表? –

+0

是嗎? Ohkay ..我不知道。你可以請顯示控制檯的SQL?我沒有意識到。但是你缺少'擁有'條款來過濾最大帳戶。 –

3

就這麼簡單,它會爲Rails 3,在導軌4

Post.joins(:tags).group("tags.name").count