LoadError on Rails пытается найти модель без пространства имен
Есть два контроллера, Front::TinController
а также Zeus::Batches::TinController
, которые расположены в controllers/front/tin_controller.rb и controllers/zeus/batches/tin_controller.rb соответственно.
Сама модель называется List::Tin
и находится в models / list / tin.rb.
Как я уже проверил, все контроллеры и модели загружены правильно, но пока Rails его пытается загрузить Tin
константа с пространством имен отдельно (который не существует сам по себе).
GET
методы работают хорошо, в то время как POST
методы в Zeus::TinController
бросить следующее исключение:
LoadError - Невозможно автоматически загрузить константу Tin, ожидаемый проект / app / models / list / tin.rb для ее определения:
Мы придумали два обходных пути:
- добавление
class Tin; end
в/app/models/list/tin.rb
файл (весьма предосудительный взлом); - удаление
Rails.root.join('app', 'models', '{**}')
из config / application.rbconfig.autoload_paths
(которые кажутся намного чище, но я не совсем уверен, что это не сломает что-то еще).
Я не совсем знаю, как обойти эту проблему в чистом виде, и я не могу понять точную концепцию такого поведения в первую очередь.