ruby on rails - Rails 4: ¿organiza modelos de rieles en subruta sin modelos de espaciado de nombres?
ruby-on-rails namespaces (1)
De forma predeterminada, Rails no agrega subcarpetas del directorio de modelos a la ruta de autocarga. Por eso solo puede encontrar modelos con espacios de nombres: el espacio de nombres ilumina el subdirectorio para buscar.
Para agregar todas las subcarpetas de la aplicación / modelos a la ruta de autocarga, agregue lo siguiente a config / application.rb :
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
O bien, si tiene un directorio de aplicaciones / modelos más complejo, el método anterior de agrupar juntas todas las subcarpetas de las aplicaciones / modelos puede no funcionar correctamente. En ese caso, puede evitar esto siendo un poco más explícito y solo agregando las subcarpetas que especifique:
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
ACTUALIZACIÓN para Rails 4.1+
A partir de Rails 4.1, el generador de aplicaciones no incluye config.autoload_paths
por defecto. Por lo tanto, tenga en cuenta que lo anterior realmente pertenece en config / application.rb .
ACTUALIZAR
Se corrigieron los ejemplos de rutas de autocarga en el código anterior para usar {*/}
lugar de {**}
. Asegúrate de leer el comentario de muichkine para detalles sobre esto.
¿Sería posible tener algo como esto?
app/models/
app/models/users/user.rb
app/models/users/education.rb
El objetivo es organizar mejor la carpeta / app / models , pero sin tener que cambiar el nombre de los modelos.
Una pregunta sin respuesta para Rails 3 está aquí: Rails 3.2.9 y modelos en subcarpetas .
Especificar table_name con espacios de nombres parece funcionar (ver la subcarpeta del modelo Rails 4 ), pero quiero hacer esto sin un espacio de nombres .