dry-rb/dry-validation

Error message path for rule with nested params

Open

#685 创建于 2021年5月13日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Ruby (193 fork)github user discovery
bughelp wanted

仓库指标

Star
 (1,421 star)
PR 合并指标
 (PR 指标待抓取)

描述

Describe the bug

The error message from dry-validation for incorrect key nesting in en.yml file for rule with nested params is giving wrong path.

To Reproduce

Consider having such schema and some rule depending on several nested parameters.

params do
  required(:data).hash do
    required(:type).filled(:string)
    required(:attributes).hash do
      ....
      required(:phone_number).maybe(:string)
      required(:phone_number_prefix).maybe(:string)
    end
  end
  .....
end

rule(data: {attributes: [:phone_number, :phone_number_prefix]}) do
  phone_number = ....

  key.failure(:invalid) unless phone_number.valid?
end

I tried different nesting of keys in en.yml, but nothing worked. This was the last edit:

en:
  dry_validation:
    errors:
      rules:
        data:
          attributes:
            phone_number:
              phone_number_prefix:
                invalid: 'is of invalid format'

Which as many other tries was giving this error Dry::Validation::MissingMessageError: Message template for :invalid under "data.attributes.phone_number.phone_number_prefix" was not found for such schema

Expected behavior

Error message with valid path in yml file for such rule or which says that rule name should be written in another way.

Discussion started here: https://discourse.dry-rb.org/t/message-path-for-rule-with-very-nested-params/1257/3

贡献者指南