使用范围

时间:2015-05-14 12:41:15

标签: ruby-on-rails activerecord

我的rails 4应用程序中有Blog和Category模型。这两个模型之间存在多对多的关系。我有多个复选框。我想获得属于该类别的所有博客。我在我的博客模型中有这个

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

1 个答案:

答案 0 :(得分:0)

因为,您正在按类别获取博客。所以使用以下代码:

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