dry-rb/dry-validation

Errors without messages

Ouverte

#604 ouverte le 21 nov. 2019

 (2 commentaires) (8 réactions) (0 personne assignée)Ruby (196 forks)github user discovery
featurehelp wanted

Métriques du dépôt

Stars
 (1 422 étoiles)
Métriques de merge PR
 (Aucune PR mergée en 30 j)

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

Guide contributeur