По умолчанию Rails не добавляет вложенные папки каталога моделей в путь автозагрузки. Вот почему он может находить только модели с именами - пространство имен освещает подкаталог для поиска.
Чтобы добавить все подпапки app / models в путь автозагрузки, добавьте в config / application.rb следующее :
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
Или, если у вас более сложный каталог app / models , вышеуказанный метод объединения всех вложенных папок app / models может работать некорректно. В этом случае вы можете обойти это, сделав немного более явным и добавив только указанные вами подпапки:
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
ОБНОВЛЕНИЕ для Rails 4.1+
Начиная с Rails 4.1, генератор приложений config.autoload_paths
по умолчанию не включает . Итак, обратите внимание, что приведенное выше действительно относится к config / application.rb .
ОБНОВИТЬ
Исправлены примеры пути автозагрузки в приведенном выше коде для использования {*/}
вместо {**}
. Обязательно прочтите комментарий Мючкина, чтобы узнать подробности об этом.