dry-rb/dry-validation

Errors without messages

Aberta

#604 aberto em 21 de nov. de 2019

 (2 comentários) (8 reações) (0 responsável)Ruby (195 forks)github user discovery
featurehelp wanted

Métricas do repositório

Stars
 (1.422 estrelas)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

At the moment validation contract returns nice human-readable errors via translation backend. Being a robot, I do not like it and I'd prefer pure data object/hash to be returned.

Justification: I don't think it is contract responsibility to translate it's errors. When used within API, all the i18n normally happens on the client side, so API can be completely translation-free.

Examples

class MyContract < Dry::Validation::Contract
  json do
    required(:name).filled(:string)
    required(:age).filled(:integer)
  end

  rule(:age) do
    key.failure(:too_young, min: 32) if age < 32
  end
end

contract = MyContract.new
errors = MyContract.new(age: 28).errors

errors.to_h # => {
                   name: [{error: :missing}]
                   age: [{error: :too_young, min: 32}]
                 }

(The above is only example response, I have no strong preference/opinion on how that data should be represented)

Resources

Discourse "discussion": https://discourse.dry-rb.org/t/dry-validation-and-error-translations/919

Guia do colaborador