Rails:自我指导有多少模型有效?

时间:2011-02-24 20:12:51

标签: ruby-on-rails ruby-on-rails-3 activerecord model self-join

所以,我正在开发一个应用程序,我希望用户能够在“文件夹”中对对象进行分组。基本上是:

User has_many :foos

Foos不必在文件夹中,但它们可以。在那种情况下:

Folder has_many :foosFoo belongs_to :folder

现在,我希望能够设置文件夹以便嵌套。我认为这就像......

Folder has_many :folders

我听说这种自我指涉关系没什么大不了的,但我真的不知道它是如何运作的。我无法弄清楚应该如何在模型中声明这个以及我需要在数据库中提供哪些列。

有人可以提供一个例子吗?我还重视您在应用程序中建立此类关系时可能提供的任何建议/提醒/警告/经验教训。

谢谢!

1 个答案:

答案 0 :(得分:31)

结帐coreyward对此问题的回答:Creating a model that has a tree structure

基本上你想在你的文件夹表中添加一个“parent_id”字段,然后在你的文件夹模型中设置一个关系,如下所示:

belongs_to :parent, :class_name => "Folder"
has_many :folders, :foreign_key => "parent_id"