Как работать с rails3 habtm с иерархией деревьев (категорий)? - PullRequest
1 голос
/ 27 апреля 2011

Я посмотрел на существующие вопросы и из-за различий не могу найти хорошего решения о том, как обрабатывать habtm с древовидной иерархией категорий. actions-as-taggable-on подразумевает, что код знает контексты, которые я не хочу. Это неоднократно задавалось на этом и других веб-сайтах, но на самом деле еще не было полного ответа.

В основном у меня есть набор категорий с одноуровневой иерархией:

  • Корневая категория 1
    • Подкатегория 3
    • Подкатегория 4
  • Корневая категория 2
    • Подкатегория 5
    • Подкатегория 6

Часть формы несколько проще. Я перечисляю все корневые категории, затем для каждого нахожу детей. Это подходит только для одноуровневой иерархии и не является оптимальным для моих потребностей, поскольку я предпочел бы иметь почти бесконечный уровень (т. Е. Решение, которое не зависит от уровня вложенности), хотя и не обязательно, если он добавляет слишком много сложности.

По большей части я не уверен, что делать дальше. На данный момент я могу получить простой хэш связанных категорий, но нет иерархии. Решения с вложенными категориями, которые я видел, не будут работать в контексте habtm, а скорее будут работать с полным деревом.

1 Ответ

0 голосов
/ 08 мая 2011

Хорошо, хорошо, это было не так очевидно, но Ancestry (он же has_ancestry: https://github.com/stefankroes/ancestry) очень хорошо справляется с этим.

В моей модели есть продукты с категориями в отношении HABTM.has_ancestry.

После того, как я получу категории продукта, достаточно просто позвонить в коллекцию:1010 *

Работает чудесно.

Короче говоря, ответом является драгоценный камень Предков: https://github.com/stefankroes/ancestry.

...