За замовчуванням Rails не додає підпапки каталогу model до шляху автоматичного завантаження. Ось чому він може знаходити лише моделі з простором імен - простір імен підсвічує підкаталог для пошуку.
Щоб додати всі підпапки програми / моделей до шляху автозавантаження, додайте в config / application.rb таке :
config.autoload_paths += Dir[Rails.root.join("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 .
ОНОВЛЕННЯ
Виправлені приклади шляху автоматичного завантаження у наведеному вище коді для використання {*/}
замість {**}
. Не забудьте прочитати коментар muichkine для детальної інформації про це.