2015-05-14 84 views
2

我在我的轨道4应用程序中有博客和类别模型。这两种模式之间存在多对多的关系。我有多个复选框。我想获得属于该类别的所有博客。我有这个在我的博客模式加入轨道4范围

scope :by_categories, lambda{|category_ids| joins(:blog_categories).where("blog_categories.category_id in (?)", category_ids) if category_ids.present?} 

,这在我的控制器只

def search_blogs 
@blogs = Blog.by_categories(params[:category_ids])  
end 

但每当我选择多个类别,如category_ids => [1,2,3],我得到博客category_id 1而不是2和3

+0

您可以从请求发生的地方发布日志吗?基本上,我想看到SQL生成。 –

+0

SELECT'blogs'。* FROM'blogs' INNER JOIN'blog_categories' ON'blog_categories'.'blog_id' ='blogs'.'id' WHERE(blog_categories.category_id in('1,3'))ORDER BY published DESC – kali

+0

现在在这里我想获得所有属于category_id 1和3的博客,但我得到的ID为1的结果不是3 – kali

回答

0

因为,您正在获取具有分类的博客。因此,请使用以下代码:

scope :by_categories, lambda{|category_ids| joins(:blog_categories).where("blogs.category_id in (?)", category_ids) if category_ids.present?}