actions_as_tree vs祖先gem用于树状菜单

Tom*_*ill 3 gem ruby-on-rails acts-as-tree

我想在我正在处理的Rails应用程序中实现树菜单(树菜单的简单示例).我不确定是否使用acts_as_tree或Ancestry.似乎使用acts_as_tree实现一个简单的树菜单会更容易,但是,Ancestry更受欢迎并且定期维护.有没有人对此有任何想法?

cly*_*yfe 10

使用祖先.它具有更强大的查询功能,因为它实现了物化路径模式,而不是实现邻接列表的 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

每个人都有起伏.选择适合自己的方式.