Ruby on rails 3 如何使用acts as taggable on在rails上构建标记层次结构

Ruby on rails 3 如何使用acts as taggable on在rails上构建标记层次结构,ruby-on-rails-3,hierarchy,tagging,acts-as-taggable-on,Ruby On Rails 3,Hierarchy,Tagging,Acts As Taggable On,我有一个rails应用程序,其中包括使用gem作为标记来标记博客文章。我的想法是使用适度的链接方法扩展这个gem的标记机制,我可以选择创建一些用户作为标记所有者,他们可以选择将一个标记链接到另一个标记作为父/子标记 目前该系统有独立的标签,如教育,儿童教育和远程教育 教育的标签所有者可以选择儿童教育和远程教育 作为第一级子级,并将它们链接在一起。在分类学家(标记管理员)批准之前,此关系将不可见 类似地,最终用户还可以建议远程教育标签成为教育的子项,标签管理员将看到该请求。根据他的批准,将建立这种

我有一个rails应用程序,其中包括使用gem作为标记来标记博客文章。我的想法是使用适度的链接方法扩展这个gem的标记机制,我可以选择创建一些用户作为标记所有者,他们可以选择将一个标记链接到另一个标记作为父/子标记

目前该系统有独立的标签,如
教育
儿童教育
远程教育

教育
的标签所有者可以选择
儿童教育
远程教育
作为第一级子级,并将它们链接在一起。在分类学家(标记管理员)批准之前,此关系将不可见

类似地,最终用户还可以建议
远程教育
标签成为
教育
的子项,标签管理员将看到该请求。根据他的批准,将建立这种关系

以下是与上述要求相关的几个问题:-

  • 是建议扩展gem,还是应该使用从头编写的独立标记模型来支持这种分层系统

  • 如果我继续使用gem提供的模式,那么应该使用什么样的模型来设计这样的需求呢。具体地说,我应该使用一个表,该表的parent_id列带有标记id和标记名称吗?或者我应该在一个具有多对多关联(tag_id、parent_tag_id(作为外键))的单独表中维护它们的关系吗

  • 我还不熟悉数据结构,因此在选择算法时需要一些初始输入,以便在标记族之间高效地进行遍历。使用链表是我的一个选择,但是考虑到Rails的传统而非配置,我真的不确定如何继续进行这项工作


  • 我记得4年前和你做过类似的事情

    还有一个如何手动执行的示例

    这两个选项都需要标记表上的parent_id列,而且非常简单。只需在models文件夹中创建一个tag.rb并扩展tag类


    注:这已经有很长一段时间了,但我记得必须检查是否存在循环,请记住这一点

    谢谢Trompa。我认为这个答案解决了我的大部分问题。@Trompa-没有循环?这到底意味着什么?通过parent\u id创建的树上的循环。您可以执行类似于A->B,B->C,C->A的操作。(C.parent\u id=B,B.parent\u id=A,A.parent\u id=C)