Отсутствует модуль при использовании DryValidations для проверки параметров запроса - PullRequest
0 голосов
/ 29 октября 2018

У меня есть конечная точка jsonapi, где я получаю параметр запроса «include» с несколькими объектами, разделенными символом «,»
Теперь я проверяю свои параметры с помощью Dry :: Validations и хотел бы предварительно обработать это поле, чтобы получить массив строк. Чтобы добиться этого, я сделал это в соответствии с документом:

module CustomTypes
  include Dry::Types.module

  IncludeRelatedObject = Types::String.constructor do |itm|
    itm.split(',')&.map :chomp
  end
end

Теперь, когда я запускаю свои тесты, я получаю эту ошибку:

Сбой / Ошибка: IncludeRelatedObject = Types :: String.constructor do | itm | itm.split (',') &. map: chomp конец

NameError: неинициализированная константа CustomTypes :: Types

И это мое подтверждение:

Dry::Validation.Params do
  configure do
    config.type_specs = true
  end
  optional(:include, CustomTypes::IncludeRelatedObject).each { :filled? & :str? }
end

Есть идеи, что случилось с моим кодом?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

include Dry::Types.module в основном включает константы в модуль, в который входит. Вы получили CustomTypes::String среди других, и это то, на что следует ссылаться в вашем пользовательском типе:

module CustomTypes
  include Dry::Types.module

  # IncludeRelatedObject = Types::String.constructor do |itm|
  IncludeRelatedObject = CustomTypes::String.constructor do |itm|
    itm.split(',').map(&:chomp)
  end
end
0 голосов
/ 29 октября 2018

Чтобы определить пользовательский тип для проверок, вы должны использовать модуль Types. Поэтому вы должны изменить имя модуля с CustomTypes на Types.

module Types
  include Dry::Types.module

  IncludeRelatedObject = Types::String.constructor do |itm|
    itm.split(',')&.map :chomp
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...