我已经看了现有的问题,由于变化,我找不到一个好的解决方案,如何处理习惯与类别的树层次结构。acts-as- tagable -on强制代码知道上下文,这是我不想要的。这个问题在本网站和其他网站上被问了好几次,但真的,还没有一个完整的答案。
基本上,我有一组具有单级层次结构的类别:
- 根目录
- 子类别3
- 子类别4
- 根目录
- 子类别5
- 子类别6
表单部分比较简单。我列出所有根类别,然后为每个根类别找到子类别。这只适用于单级层次结构,并不是我需要的最佳选择,因为我宁愿有接近无限的级别(即对嵌套级别漠不关心的解决方案),尽管如果它增加了太多的复杂性则不是必要的。
这主要是因为我不确定如何进行。此时,我可以得到相关类别的简单散列,但没有层次结构。我所看到的嵌套类别解决方案在习惯上下文中不起作用,而是与完整的树本身一起工作。
好吧,这不是那么明显,但祖先(又名has_ancestry: https://github.com/stefankroes/ancestry)管理得很好。
我的模型具有具有HABTM关系的类别的产品。类别是一个带有has_ancestry的层次结构。
一旦我得到了产品的类别,这是一个简单的问题,调用安排集合:
@product.categories.arrange。Each do |root_cats, sub_cats|
很好地工作。
所以简而言之,答案是祖先的宝石:https://github.com/stefankroes/ancestry.