Как установить значение по умолчанию для схемы Dry::Validation.Params?
У меня следующая схема
Dry::Validation.Params do
optional(:per_page).filled(:int?, lteq?: 1000)
optional(:page).filled(:int?)
end
Если я передаю пустой хеш для проверки, я получаю пустой вывод, но я хочу установить значения по умолчанию для моих данных.
Я старался Dry::Types.default
но он не добавляет значения по умолчанию в вывод. Это то, что я пытался.
Dry::Validation.Params do
optional(:per_page).filled(Dry::Types['strict.integer'].default(10), lteq?: 1000)
optional(:page).filled(:int?)
end
Можно ли делать то, что я хочу?
2 ответа
Dry::Validation
не имеет этой цели.
Я рекомендую вам использовать dry-initializer для ваших параметров, прежде чем передавать его на валидацию.
Вы можете сделать что-то вроде этого:
optional(:per_page).filled(Types::Integer.constructor { _1 || 10 })
Или определите свою собственную резервную стратегию, как здесь https://github.com/dry-rb/dry-types/pull/410.
optional(:per_page).filled(Types::Integer.constructor { |input, type| type.(input) { 10 } })