使用acts_as_tree 我希望能够通过一次SQL 调用预加载完整的子层次结构完整的树。为此,我在表中添加了一个 tree_id,它贯穿该树中的所有后代。
我曾探索过acts_as_nested_set(实际上是awesome_nested_set)作为一种可能性,但由于我将树移植到其他树中,我发现将嵌套集用于我的目的执行了太多更新。与acts_as_versioned 一起,这对我所追求的设计来说是一个不可接受的复杂性。就我的目的而言,我相信acts_as_tree 更适合。
我唯一的问题是抓取完整的层次结构树。ActiveRecord 的 :include 选项适用于 :children 但不适用于 :descendants。我满足于编写自己的手动检索和映射关联的方法。有关如何完成此操作的任何指导或示例?
从我的角度来看,我搁置使用树(支持抓取整个结构化树)的嵌套集的唯一好处是选择性地抓取树的任何子部分。我没关系。
我希望避免的解决方案是消除与树一起出现的 :children 关联,并定义和手动加载在每个树节点上定义的子数组。