我想在我正在处理的Rails应用程序中实现树状菜单(simple example of tree menu)。我不确定是否使用acts_as_tree或Ancestry。似乎使用acts_as_tree实现一个简单的树菜单会更容易,但是,Ancestry更受欢迎并且定期维护。有没有人对此有任何想法?
答案 0 :(得分:10)
使用祖先。它具有更强大的查询功能,因为它实现了materialized path pattern,而不是实现adjacency list的acts_as_tree。 还有其他选项,如嵌套集,但物化路径通常是最全面的。
https://communities.bmc.com/communities/docs/DOC-9902
如果需要在数据库级别预先排序(例如,分页树形网格,根据树中的深度进行迭代和缩进/定义以进行显示的预加载菜单),您需要使用递归查询,或可排序的编码,如嵌套集或嵌套间隔。 (也就是说,如果内存中的排序不是一个选项,它几乎不会。)
https://github.com/collectiveidea/awesome_nested_set
https://github.com/clyfe/acts_as_nested_interval
每个人都有起伏。选择适合自己的东西。