使用DryValidations验证查询参数时缺少模块

时间:2018-10-29 13:46:18

标签: ruby-on-rails ruby dry-rb

我有一个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做| 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 :(得分:3)

false基本上将常量转换为要包含在其中的模块。您获得了null等信息,这是您的自定义类型中应该引用的内容:

include Dry::Types.module

答案 1 :(得分:-1)

要为验证定义自定义类型,应使用“类型”模块。因此,您应该将模块名称从CustomTypes更改为Types

module Types
  include Dry::Types.module

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