Неинициализированная постоянная проблема в пользовательском пространстве имен Rails - PullRequest
1 голос
/ 09 июля 2019

У меня есть проект Rails, и я хотел создать несколько пользовательских объектов запросов, которые будут использоваться моим приложением.

Файлы классов находятся в /app/queries/tasks, пример их выглядит следующим образом:

module Queries
  module Tasks
    class TaskQuery
      #some code
    end
  end
end

Я добавил путь / app / query к константе автозагрузки и проверил его с помощью rails r 'puts ActiveSupport::Dependencies.autoload_paths', и я вижу, что включены все каталоги в / app / query, включая /app/queries/tasks.

Тем не менее, когда я пытаюсь использовать такой объект (из консоли Rails или из контроллера):

Queries::Tasks::TaskQuery.new()

Я получаю:

Traceback (most recent call last):
        1: from (irb):1
NameError (uninitialized constant Queries)

Любая идеяпочему это происходит?

1 Ответ

3 голосов
/ 09 июля 2019

Ваш фактический код будет работать, если папка запросов содержит папку запросов, которая содержит папку задач, которая содержит файл task_query:

queries
└── queries
    └── tasks
        └── task_query.rb

Если папка запросов находится в autoload_paths, то нет необходимости заключать Tasks в модуль Queries, поскольку Queries - это папка, в которой она будет храниться. Используйте только Tasks:

module Tasks
  class TaskQuery
    ...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...