Domyślnie Railsy nie dodają podfolderów katalogu models do ścieżki automatycznego ładowania. Dlatego może znaleźć tylko modele z przestrzeniami nazw - przestrzeń nazw oświetla podkatalog, w którym ma zajrzeć.
Aby dodać wszystkie podfoldery aplikacji / modeli do ścieżki automatycznego ładowania, dodaj następujące elementy do pliku config / application.rb :
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
Lub, jeśli masz bardziej złożony katalog app / models , powyższa metoda globalnego łączenia wszystkich podfolderów app / models może nie działać poprawnie. W takim przypadku możesz to obejść, będąc nieco bardziej precyzyjnym i dodając tylko określone podfoldery:
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
UPDATE dla Rails 4.1+
Od wersji Rails 4.1 generator aplikacji nie zawiera config.autoload_paths
domyślnie. Zwróć więc uwagę, że powyższe naprawdę należy do config / application.rb .
AKTUALIZACJA
Naprawiono przykłady ścieżek automatycznego ładowania w powyższym kodzie do użycia {*/}
zamiast {**}
. Koniecznie przeczytaj komentarz muichkine, aby uzyskać szczegółowe informacje.