【问题标题】:How to handle rails3 habtm with tree hierarchy (of categories)?如何使用树层次结构(类别)处理 rails3 habtm?
【发布时间】:2011-05-08 05:44:26
【问题描述】:

我查看了现有问题,但由于存在差异,我无法找到一个很好的解决方案来处理带有树状类别层次结构的 habtm。作为可标记的行为强制代码知道上下文,这是我不想要的。这个问题已经在这个网站和其他网站上被问过好几次了,但实际上,还没有一个完整的答案。

基本上我有一组具有单级层次结构的类别:

  • 根类别 1
    • 子类别 3
    • 子类别 4
  • 根类别 2
    • 子类别 5
    • 子类别 6

表单部分稍微简单一些。我列出了所有的根类别,然后为每个找到孩子。这仅适用于单级层次结构,而不适合我的需求,因为我宁愿拥有接近无限的级别(即与嵌套级别无关的解决方案),尽管如果它增加了太多复杂性则没有必要。

主要是因为我不确定如何进行。此时我可以获得相关类别的简单哈希,但没有层次结构。我见过的嵌套类别解决方案不适用于 habtm 上下文,而是使用完整的树本身。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 tree has-and-belongs-to-many


    【解决方案1】:

    好吧,这不是很明显,但 Ancestry(又名 has_ancestry:https://github.com/stefankroes/ancestry)管理得很好。

    我的模型中的产品具有 HABTM 关系中的类别。类别是具有 has_ancestry 的层次结构。

    一旦我获得了产品的类别,就可以简单地在集合上调用排列:

    @product.categories.arrange.each 做 |root_cats, sub_cats|

    效果很好。

    简而言之,答案就是祖先宝石:https://github.com/stefankroes/ancestry

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 2012-11-07
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多