使用ID数组搜索

时间:2014-04-04 05:22:37

标签: ruby ruby-on-rails-3 search activerecord

所以,假设我有两个模型帖子&分类

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

2 个答案:

答案 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)