Ancestry 有很多很棒的作用域和方法,包括node.depth
(它返回一个深度级别——即根节点为 0,子节点为 1,等等)。
它还具有一些允许您按深度遍历树的范围,例如node.subtree(:to_depth => 2)
.
但我没有看到任何表明如何计算/检索整个树的总深度的东西 - 从根到最后一个节点。
我唯一能想到的就是total_depth_cache
在我的模型上创建一个列,当添加一个新的孩子时,它会增加它。但是然后我必须编写逻辑来管理它(即,每当删除所有子级时,它都会递减 - 如果只有 1 级,但如果删除了具有 3 级子级的子级,则必须更新深度因此)。这很快就会变得非常复杂。
有没有更简单的方法来做到这一点?