Как установить значение по умолчанию для схемы 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 } })
Другие вопросы по тегам