dry-rb/dry-validation

Errors without messages

オープン

#604 opened on 2019/11/21

 (2 件のコメント) (8 件のリアクション) (0 人の担当者)Ruby (196 件のフォーク)github user discovery
featurehelp wanted

Repository metrics

Stars
 (1,422 個のスター)
PR merge metrics
 (30d に merged 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

コントリビューターガイド