dry-rb/dry-validation

Errors without messages

開放

#604 建立於 2019年11月21日

 (2 則留言) (8 個反應) (0 位負責人)Ruby (195 個分叉)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

貢獻者指南