С помощью act_as_tree я хотел бы иметь возможность предварительно загрузить целое дерево с полной дочерней иерархией без изменений одним вызовом SQL. Для этого я добавил tree_id в таблицу, и она проходит через всех потомков в этом дереве.
Я исследовал act_as_nested_set (на самом деле awesome_nested_set) как возможность, но, поскольку я прививаю деревья к другим деревьям, я обнаружил, что использование вложенного набора для моих целей приводит к слишком большому количеству обновлений. Наряду с acts_as_versioned это неприемлемое усложнение дизайна, который мне нужен. Я считаю, что для моих целей лучше подходит activ_as_tree.
Моя единственная проблема - собрать целое дерево с неповрежденной иерархией. Опция: include ActiveRecord работает с: children, но не с: потомками. Я доволен написанием собственного метода для извлечения и сопоставления ассоциаций вручную. Любое руководство или примеры, как это сделать?
С моей точки зрения, единственным преимуществом вложенных наборов, которые я откладываю для использования дерева (которое поддерживает захват всего структурированного дерева), является выборочный захват любого подраздела дерева. Я в порядке с этим.
Решение, которое я надеюсь избежать, состоит в том, чтобы устранить ассоциацию: children, которая идет вместе с деревом, и определить и вручную загрузить массив children, определенный на каждом узле дерева.