Не удалось загрузить Dry::Schema::MessageCompiler внутри модуля.
У меня возникла следующая проблема при использовании драгоценного камня сухой схемы.
Когда я вызываю консоль, константа загружается нормально, как показано на рисунке:
Однако я пытаюсь вызвать его внутри модуля, и в этом модуле появляется следующее сообщение об ошибке. (В этом примере я пытаюсь вызвать константу в методе инициализации, но это происходит везде, где я вызываю)
На всякий случай это полный код файла:
module Validators
module Adapters
class DrySchemaValidatorAdapter
attr_reader :entity
def initialize(entity:)
@entity = entity
end
def validate(params:, caller_method:)
validation_schema = schema(caller_method:).call(params.to_h)
Structs::ValidationResponseStruct.new(!validation.failure?, validation.errors.to_h)
end
private
def schema(caller_method:)
"Schemas::#{entity}::#{caller_method.upcase}".constantize
end
end
end
end
Эта линия
Я уже пробовал использовать require, но это не помогло.
Заранее спасибо.
Я пытался использовать require, но безуспешно.
Чего я хочу: иметь возможность использовать драгоценный камень внутри модулей/классов.
ОБНОВЛЕНИЕ: найдено решение
Я расширил модуль схемами во время создания экземпляра адаптера, что, похоже, решило проблему.
def initialize(entity:)
@entity = entity
extend "Schemas::#{entity}".constantize
end
Однако я не знаю, почему это решает проблему и почему проблема возникла вообще.
1 ответ
ОБНОВЛЕНИЕ: найдено решение
Я расширил модуль схемами во время создания экземпляра адаптера, что, похоже, решило проблему.
def initialize(entity:)
@entity = entity
extend "Schemas::#{entity}".constantize
end
Однако я не знаю, почему это решает проблему и почему проблема возникла вообще.