dry-rb/dry-validation

Errors without messages

Open

#604 opened on Nov 21, 2019

View on GitHub
 (2 comments) (8 reactions) (0 assignees)Ruby (193 forks)github user discovery
featurehelp wanted

Repository metrics

Stars
 (1,421 stars)
PR merge metrics
 (No merged PRs in 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

Contributor guide