ruby-on-rails - rails : How do self-referential has_many models work?

标签 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
我听说这种自我参照关系没什么大不了的,但我真的不明白它是如何运作的。我一直无法弄清楚这应该如何在模型中声明以及我需要在数据库中提供哪些列。

谁能提供一个例子?我也很重视您可以提供的关于在应用程序中建立这种关系的任何建议/提示/警告/经验教训。

谢谢!

最佳答案

在此处查看 coreyward 对问题的回答:Creating a model that has a tree structure

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

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

关于ruby-on-rails - rails : How do self-referential has_many models work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109893/

相关文章:

ruby-on-rails - Rails 7 - render_to_string - MissingTemplate

ruby-on-rails - Rails - 可以将 PDF 转换为图像吗?

ruby-on-rails - ActiveRecord 访问器点 (.) 与方括号 ([])

ruby-on-rails-3 - 在模块内引用常量时的不一致行为

ruby-on-rails - 在MacVim中使用rails.vim Rake运行规范,如何获得彩色输出

ruby - 使用 ffmpeg、ffprobe 或 rvideo 在 ruby​​ 脚本中获取视频元数据

ruby-on-rails - rails : Calling Model methods in to_json(:methods => [:model_method])

ruby-on-rails - 如何更新 Rails Controller 以在 Model.create 错误时返回错误?

mysql - 如何通过sql查询有效检查记录是否存在?

sql - Rails 使用 dependent destroy 和 dependent nullify 时