Premisa: Normalmente, durante la preparación de una nueva aplicación Ruby on Rails, saco modelos y relaciones con respecto a las navegaciones de usuario. Usualmente llego a un lugar donde tengo que preguntarme, si debo o no ir más allá de la "regla de oro" habitual de anidar no más de 1 nivel de profundidad. A veces siento la necesidad de anidar, en lugar de crear otra ruta de espacio de nombres y duplicar el trabajo.
He aquí un ejemplo:
¿Anidar o no anidar?
modelos: usuario, ubicación, ubicación
usuario tiene y pertenece a muchas empresas (muchos a muchos)
usuario tiene y pertenece a muchos lugares (muchos a muchos)
compañía tiene y pertenece a muchos lugares (muchos a muchos)
Rutas:
1 nivel de anidamiento
usuarios /: user_id/empresas/- lista de todas las empresas relacionadas a un usuario
usuarios /: user_id/lugares/- lista de todos los lugares relacionados con un usuario
más de 1 nivel de anidamiento
usuarios /: user_id/companies /: company_id/locations/- enumera todas las ubicaciones de la empresa de un usuario
Entonces, ¿mi pregunta es si es apropiado o no anidar más de 1 nivel de profundidad en RoR? ¿Si o no? ¿Y por qué?
Rutas superficiales FTW. Eso es casi seguro lo que quieres. El índice de LocationsController no tiene sentido como/locations, porque nunca querrás/all/the locations.Pero le permite mantener todas las ubicaciones en/locations/ sin importar con qué tipo esté asociado. –
Otto