【发布时间】:2015-05-14 12:41:15
【问题描述】:
我的 rails 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 的博客
【问题讨论】:
-
你能从请求发生的地方发布日志吗?基本上,我希望看到生成的 SQL。
-
SELECT
blogs.* FROMblogsINNER JOINblog_categoriesONblog_categories.blog_id=blogs.idWHERE (blog_categories.category_id in ('1, ')) 按已发布的 DESC 排序 -
现在我想获取属于 category_id 1 和 3 的所有博客,但我得到的是 id 1 而不是 3 的结果
-
@kali 这里的问题是你的 params[:category_ids] 是一个字符串。使它们成为 id 数组以获得所需的输出
-
('1,3')。这是字符串预期 (1,3)
标签: ruby-on-rails activerecord