0

背景:帖子通过 CommunityPosts 有许多社区。我了解以下查询返回与这些 community_id 中的任何一个相关联的帖子。

Post.joins(:communities).where(communities: { id: [1,2,3] })

目标:我想查询与数组中任意两个 community_id 相关的帖子。具有社区 1 和 2、社区 1 和 3 或社区 2 和 3。

编辑:请假设数组的长度是未知的。使用了这一系列的解释目的。它将是 current_user.community_ids 而不是 [1,2,3]。

4

1 回答 1

0

This will get you all posts having exactly any two associations from the current user's communities:

Post.select("posts.*, count(distinct(communities.id))").joins(:communities).where("communities.id in (?)", current_user.community_ids).group("posts.id").having("count(distinct(communities.id)) = 2")

Apparently, to relax the restriction, you'll need to change the condition in the having clause to >=.

于 2013-10-10T03:20:58.400 回答