我有一个rails应用程序,其中包括使用gem acts-as-taggable-on标记博客帖子。我的想法是使用中等链接方法扩展此gem的标记机制,我可以选择创建一些用户作为标记所有者,他们可以选择将一个标记链接到另一个标记作为父/子。
目前系统有独立的标签,例如Education
,Child Education
和Distance Education
Education
的代码所有者可以选择Child Education
和Distance Education
作为第一级孩子并将他们联系在一起。在被Taxonomist(标签管理员)批准之前,这种关系是不可见的。
同样,最终用户还可以建议Distance Education
标记为Education
的子标记,并且此请求将对标记管理员可见。根据他的同意,将建立关系。
这些是我与上述要求有关的几个问题: -
建议扩展gem还是应该使用从头开始编写的独立标记模型来支持这种分层系统?
如果我继续使用gem提供的模式,应该使用什么样的模型来设计这样的需求。具体来说,我应该使用带有标签ID和标签名称的parent_id列的单个表吗?或者我应该在具有多对多关联的单独表中维护它们的关系(tag_id,parent_tag_id(作为外键))。
我也是数据结构的新手,所以我需要一些关于算法选择的初始输入,以便在标签系列之间有效地进行遍历。使用链表是我的选择之一,但考虑到Rails的常规配置咒语,我真的不确定如何继续这个。
答案 0 :(得分:3)
我记得4年前用ActsAsTree做了类似的事情。
还有一个如何手动here的例子。
两个选项都需要在tags表上使用parent_id列,并且非常简单。只需在models文件夹中创建一个tag.rb并扩展Tag类。
聚苯乙烯。它已经很长一段时间了,但我记得必须检查没有循环,只需记住它