Ruby on rails 3 ActiveRecord:返回属于祖先节点树的对象

Ruby on rails 3 ActiveRecord:返回属于祖先节点树的对象,ruby-on-rails-3,Ruby On Rails 3,我有一个类别模型,它使用祖先宝石创建树层次结构。如果我有模范关系 Category has_many :posts 我想知道如何才能返回属于某个类别或该类别的子类别的帖子。category.subtree返回ARel对象,因此我可以执行以下操作: category.subtree.includes(:posts) 它按类别映射帖子,但我只想要帖子。我能想到的唯一一件事就是在集合上迭代,并创建一个新的仅包含文章的集合。试试: Post.where('category_id in (?)', c

我有一个类别模型,它使用祖先宝石创建树层次结构。如果我有模范关系

Category has_many :posts
我想知道如何才能返回属于某个类别或该类别的子类别的帖子。category.subtree返回ARel对象,因此我可以执行以下操作:

category.subtree.includes(:posts)
它按类别映射帖子,但我只想要帖子。我能想到的唯一一件事就是在集合上迭代,并创建一个新的仅包含文章的集合。

试试:

Post.where('category_id in (?)', category.subtree_ids)

我现在不记得了,如果subtree_id也会返回category本身的id

太棒了。成功了!是的,子树id也会返回类别本身的id。