Mogoid 7.0.4 возвращает Невозможно автоматически загрузить константу (Mongoid ~ 6 работал нормально) - PullRequest
0 голосов
/ 23 июня 2019

Когда я пытаюсь перейти на Mongoid ~ 7, выдается следующее сообщение:

            Unable to autoload constant User::AuditSession, expected ./testapp/app/models/user/audit_session.rb to define it

У меня действительно есть этот файл, но он определяет AuditSession, а не User :: AuditSession.Я поместил все пользовательские модели в этот каталог, который работал в Mongoid ~ 6, но, похоже, он больше не работает в Mongoid ~ 7.

Есть ли какой-нибудь обходной путь, который я могу сделать, чтобы получить старое поведение?- Моя цель - избежать перемещения всех файлов моей модели или редактирования имен всех моих классов.

1 Ответ

0 голосов
/ 24 июня 2019

Согласно соглашениям Rails, если модель определена в user/audit_session.rb, имя класса должно быть User::AuditSession.

Обходной путь должен предварительно загрузить класс так, чтобы он был загружен к тому времени, когда оннеобходимо.В зависимости от того, откуда используется класс, это может быть так же просто, как поместить

require 'user/audit_session'

в файл, который использует AuditSession.

В качестве альтернативы вы можете определить верхний уровень audit_session.rb, которыйвключает в себя другой файл (т. е. просто включает в себя вышеупомянутый включить).

...