用于准版本化的Rails自引用关系

时间:2014-07-07 17:32:48

标签: ruby-on-rails activerecord

我正在寻找在rails模型中处理自我引用关系的最优雅方式。我有一个“答案”可以作为另一个“答案”的基础。由于大量信息可以从“回答”变为另一个,因此不一定有彼此的版本。我希望保持一种多层次的父母子女关系,这样我就可以追溯作者,内容等等。我看了几个宝石,但是我很犹豫要介绍这样的东西,因为它可能有点矫枉过正。这样做有一个首选的“轨道方式”吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

听起来你想要创建一个树结构,其中每个答案都引用了它的“父”答案。这是一个常见的用例,有一个whole slew of gems可以帮助解决这个问题。

在最基本的情况下,您需要在引用父母的答案上使用某种parent_id列。在这一点上,创建抓住父母,孩子,兄弟姐妹等的方法和范围非常容易。

由于您的用例看起来非常简单,编写自己的代码来管理树可能很好。但是,对于使用已经过充分测试并且已经解决问题的现有代码,可以说一些事情。如果不出意外,它可以节省您编写自己的单元测试的时间。 ActsAsTree就像他们来的一样基本。它附带了早期版本的Rails,因此如果您发现您的需求因某种原因而增长,那么此空间中的每个其他宝石都有一个您可以遵循的升级路径。