through references rails left inner has_many has_and_belongs_to_many example active ruby-on-rails ruby-on-rails-3 activerecord model self-join

ruby on rails - references - Rieles: ¿Cómo funcionan los modelos autorreferenciales? Muchos modelos?



rails join table (1)

Entonces, estoy trabajando en una aplicación en la que deseo que los usuarios puedan agrupar objetos en "carpetas". Básicamente:

User has_many :foos

Los Foos no tienen que estar en una carpeta, pero pueden serlo. En ese caso:

Folder has_many :foos y Foo belongs_to :folder

Ahora, me gustaría poder configurar carpetas para que puedan anidarse. Creo que esto es algo así como ...

Folder has_many :folders

He oído que este tipo de relación autorreferencial no es gran cosa, pero realmente no entiendo cómo funciona. No he podido averiguar cómo se supone que se debe declarar en el modelo y qué columnas debo proporcionar en la base de datos.

¿Alguien podría ofrecer un ejemplo? También me gustaría valorar cualquier sugerencia / advertencia / advertencias / lecciones aprendidas que pueda ofrecer sobre la configuración de este tipo de relación en una aplicación.

¡Gracias!


Consulte la respuesta de coreyward a la pregunta aquí: Creación de un modelo que tiene una estructura de árbol

Básicamente, desea agregar un campo "parent_id" a su tabla de carpetas y luego establecer una relación en su modelo de carpeta de esta manera:

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