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.rb config.autoload_paths (которые кажутся намного чище, но я не совсем уверен, что это не сломает что-то еще).

Я не совсем знаю, как обойти эту проблему в чистом виде, и я не могу понять точную концепцию такого поведения в первую очередь.

0 ответов

Другие вопросы по тегам