Tuve una discusión recientemente con un amigo mío que también es desarrollador de RoR. Discutimos sobre cómo los modelos de Rails deberían ser gestionados. Personalmente, me gusta dejar en el espacio de nombres predeterminado solo los modelos raíz (por ejemplo, usuario, artículo, factura, etc.) y los modelos dependientes van a un módulo (por ejemplo, usuario :: perfil, usuario :: actividad) con el nombre de la raíz modelo con el que están asociados.Modelos de espaciado de nombres en una aplicación de Rails
Por otro lado, he visto muchos proyectos que tenían como 100 modelos en el espacio de nombres predeterminado llamado como perfil_usuario, actividad_usuario, etc. A juzgar por el desarrollo de Java (Spring), la comunidad java tiende a organizar clases en paquetes y agruparlos lógicamente, lo que me parece muy atractivo. hay algún inconveniente en modelos de agrupación de módulos (excepto el extra:: class_name en relación definición)
Entonces la pregunta es ¿hay alguna y razones específicas por las personas por lo general no lo hacen?
No recuerdo la última vez que abrí el explorador de la base de datos. Con ruby, es natural que se abstraigan tales cosas. Por lo que recuerdo, Foo :: Bar generará una tabla "foo_bar". El único inconveniente es que debe especificar a: class_name => Foo :: Bar en asociaciones. Me pregunto cómo se supone que una aplicación de rieles maneja una aplicación compleja si anima a mantener todos los modelos en un solo directorio. Quiero decir, si la aplicación crece demasiado, ¿es el espacio de nombres una parte de la refactorización necesaria o uno simplemente cambia a Java?) – FreeCandies
Normalmente uso el método de usar el prefijo como una especie de espacio de nombres, así que creas cosas como Perfil de usuario y Actividad de usuario en lugar de Perfil o Actividad. Esto lleva a un tipo natural de agrupación en el listado. Es raro ver una aplicación con más de 500 modelos que se beneficiarían significativamente del espacio de nombres. Complicado es complicado. A veces es mejor ser honesto sobre cuán compleja es tu aplicación que tratar de pretender que es realmente simple enterrando la complejidad y haciendo que sea más difícil encontrar cosas. – tadman