我有一个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
任何想法我的代码有什么问题吗?
答案 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