Я хочу реализовать древовидное меню (простой пример древовидного меню) в приложении Rails, которое я работаю над. Я не уверен, использовать ли act_as_tree или Ancestry. Кажется, было бы проще реализовать простое древовидное меню с помощью act_as_tree, однако Ancestry более популярен и регулярно поддерживается. У кого-нибудь есть мысли по этому поводу?
act_as_tree против драгоценного камня предков для древовидного меню
Ответы (1)
Используйте родословную. Он обладает более мощными возможностями запросов, так как реализует шаблон материализованного пути, в отличие от act_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
У каждого есть взлеты и падения. Выбирайте то, что вам подходит.