Rails Ancestry gem выбирает дочерние узлы, где любой узел в поддереве дочернего узла удовлетворяет условию - PullRequest
0 голосов
/ 30 июня 2019

Используя гем Rails Ancestry, я хотел бы знать, как можно выбрать все прямые дочерние узлы данного узла (например, parent в примере ниже), где любой из узлов поддерева этих дочерних узлов выполняетусловие.

Я знаю, что могу сделать что-то вроде следующего:

parent = NodeTree.roots.first
children = parent.children
selected_children = children.reject {|child| !child.subtree.where(valid: 1).exists? }

Но я бы предпочел сделать это в одном запросе ActiveRecord, так как на любом данном уровне может быть много детейи я не хотел бы выполнять отдельный запрос для каждого.

Есть предложения?

...