ruby on rails - Modelos de espacios de nombre en Rails: ¿Cuál es el estado de la unión?
ruby-on-rails activerecord (3)
Desde el principio, Rails ha tenido problemas con los modelos con espacios de nombre. A medida que pasaba el tiempo, casi todos dejaron de usarlo. Yo incluido
Con Rails 2.3 fuera, me gustaría una actualización sobre la situación. Las preguntas específicas que tengo en mente son:
- En primer lugar, ¿es bueno ir?
- nombre de la tabla, ¿qué regla a seguir?
- Asociaciones, ¿cómo declararlas con la menor verbosidad? ¿Cómo nombrar columnas de clave externa?
- requisitos automáticos, ¿funciona si coloca los archivos de modelo en un subdirectorio que coincida con el espacio de nombres? O, ¿cómo nombrar y dónde colocar los archivos?
- generación, el generador de modelos maneja los espacios de nombres con éxito y correctamente?
- generación, ¿qué hay del generador de andamios, que incluye controladores?
- ¿Alguna incompatibilidad / peculiaridades de las que uno deba estar consciente?
La mejor reseña que he visto sobre el tema es de Strictly Untyped . Que yo sepa, 2.3 no ha resuelto ningún problema, lo que significa que todavía no son confiables.
Recientemente tuvimos un gran debate sobre esto dentro de nuestra empresa. Creo que al final del día, pensamos que si no puede nombrar tablas de espacio dentro de una base de datos, no tiene sentido ubicar los modelos en espacios de nombre. Nos decidimos por el prefijo de nuestros modelos (User, UserAddress, UserEmailAddresses) y ponerlos en el directorio de usuarios, y luego usar:
config.load_paths << "#{RAILS_ROOT}/app/models/users"
Para cargar los modelos. Para controlar la verbosidad en nuestros modelos, hacemos esto con frecuencia:
has_many :addresses, :class_name => "UserAddress"
Al generar, lo creamos como si no hubiera espacio de nombres (script / generar modelo UserAddress) y luego lo copiamos manualmente en el directorio de usuarios.
Encogimiento de hombros. Supongo que al final, todo esto realmente le da una estructura de directorio más limpia, lo que en realidad es más problemático para un usuario de VIM como yo, pero agradable para TextMaters.
Todavía me mantendría alejado de ello. Cualquier cosa ganada (lo cual no estoy seguro de lo que sería honestamente) definitivamente se perdería si consideras la molestia y la pérdida de brevedad y claridad en tu código.
Mi última aplicación tiene 87 recursos e incluye funciones administrativas en todo el lugar. No veo la necesidad de espacios de nombre, en mi humilde opinión.