Por lo tanto, estoy trabajando en una aplicación en la que deseo que los usuarios puedan agrupar objetos en "carpetas". Básicamente:Rieles: ¿Cómo funcionan los modelos autorreferenciales has_many?
User has_many :foos
Foos no tiene que estar en una carpeta, pero puede ser. En ese caso:
Folder has_many :foos
y Foo belongs_to :folder
Ahora, me gustaría ser capaz de configurar las 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 yo 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 dar 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! respuesta
Estoy bastante seguro de que no necesita el ': foreign_key =>" parent_id "' en la línea belongs_to. Solo debería estar en la línea has_many, ¿sí? – 3nafish
@ 3nafish gracias y buena captura. Actualizaré la respuesta –
Si desea ponerle otro nombre a la relación infantil, p. 'children_folders' entonces necesitas especificar el nombre de clase:' has_many: children_folders,: foreign_key => "parent_id",: class_name => "Folder" ' – AJP