使用ActiveRecord获取父母集合的孩子

时间:2016-05-24 09:04:01

标签: ruby-on-rails ruby activerecord rails-activerecord ruby-on-rails-5

我有一个分类模型和一个多对多关系的Post模型。

我希望获得某些类别的所有帖子。

我希望结果是ActiveRecord对象,以便能够进行进一步的查询。

现在我正在使用.map这样

categories.map{|c| c.posts.order(position: :asc)}

2 个答案:

答案 0 :(得分:3)

对帖子使用嵌入式查询,如下所示:

Post.where(category_id: Category.all.pluck(:id)).order(position: :asc)

答案 1 :(得分:-2)

首先找到您感兴趣的所有类别并获取ID:

category_ids = Category.where('name like ?', '%foo%').pluck(:id)

然后只查询这个ID列表中包含category_id的帖子:

posts = Post.where(category_id: category_ids)

这是一个AR对象,因此您可以继续添加orderwhere等等:

posts.order(position: :asc)