使用Rails Ancestry宝石,我想知道如何选择给定节点的所有直接子节点(例如下面的示例中的parent
),其中这些子节点的任何子树节点节点满足条件。
我知道我可以做以下事情:
parent = NodeTree.roots.first
children = parent.children
selected_children = children.reject {|child| !child.subtree.where(valid: 1).exists? }
但是我宁愿在一个ActiveRecord查询中执行此操作,因为在任何给定级别上可能有很多子级,并且我不想为每个子级执行单独的查询。
有什么建议吗?