De forma predeterminada, Rails no agrega subcarpetas del directorio de modelos a la ruta de carga automática. Es por eso que solo puede encontrar modelos con espacios de nombres: el espacio de nombres ilumina el subdirectorio para buscar.
Para agregar todas las subcarpetas de aplicaciones / modelos a la ruta de carga automática, agregue lo siguiente a config / application.rb :
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
O, si tiene un directorio de aplicaciones / modelos más complejo , es posible que el método anterior de agrupar todas las subcarpetas de aplicaciones / modelos no funcione correctamente. En cuyo 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>")
ACTUALIZAR para Rails 4.1+
A partir de Rails 4.1, el generador de aplicaciones no incluye config.autoload_paths
de forma predeterminada. Entonces, tenga en cuenta que lo anterior realmente pertenece a config / application.rb .
ACTUALIZAR
Se corrigieron los ejemplos de ruta de carga automática en el código anterior para usar en {*/}
lugar de {**}
. Asegúrese de leer el comentario de muichkine para obtener detalles sobre esto.