所以,假设我有两个模型帖子&分类
Post has_many Categories
现在,我想根据类别搜索帖子?
示例:
Post 1 has categories 2,5,6
Post 2 has categories 5,9
Post 3 has categories 2,4,8,9
现在在搜索用户选择类别2,4,8
在结果页面中,我想显示具有类别(2,4,8)的帖子
发布3
但是当我们使用IN查询返回Post 1&帖子3。
我只想要Post 3
答案 0 :(得分:1)
categories_ids=[2,3,4]
@posts = Post.joins(:categories).
where("categories.id IN (?) ",categories_ids).count(:group => "post_id")
结果将是这样的:
{"1"=>2,"3"=>2}
在该Hash键中定义Post id& value定义匹配的类别数。
答案 1 :(得分:0)
category_ids = [2,4,8]
Post.select('posts.*')
joins(:categories).
where(categories: {id: category_ids}).
group('posts.id').
having('COUNT(categories.id) = ?', category_ids.size)