1

我正在尝试查找多个模型中的标签总数。

在一个模型中,它工作得很好:

Post.tag_counts_on(:hashtags).order('count desc')

但是,我有另一个模型,也称为组织,它也采用主题标签。这让我有两个独立的计数:

Post.tag_counts_on(:hashtags).order('count desc')
Organization.tag_counts_on(:hashtags).order('count desc')

但是,我希望能够获得两者的总数。当我尝试添加它们时,它们不会合并,而是只是将表格堆叠在一起:

Post.tag_counts_on(:hashtags).order('count desc') +
Organization.tag_counts_on(:hashtags).order('count desc')

所有关联模型都应该有一种方法,允许等效于以下内容:

Hashtag.tag_counts.order('count desc')

有任何想法吗?

4

1 回答 1

1

我认为您可以使用自定义选择

SELECT tags.name, count(*) as tag_count 
FROM tags JOIN taggings on taggings.tag_id = tags.id 
where taggings.taggable_type = 'Post' or taggings.taggable_type='Organization' 
GROUP BY tags.name 
ORDER BY tag_count DESC

如果需要,使用 arel 构建此查询

于 2013-09-17T09:19:20.070 回答