dry-rb/dry-validation

Errors without messages

开放

#604 创建于 2019年11月21日

 (2 条评论) (8 个反应) (0 位负责人)Ruby (196 个派生)github user discovery
featurehelp wanted

仓库指标

星标
 (1,422 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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

贡献者指南