Сообщение сухой проверки i18n для проверки массива

Скажем, я определил сухую проверку следующим образом:

      class ApplicationContract < Dry::Validation::Contract
  config.messages.backend = :i18n
  config.messages.load_paths << 'config/errors.yml'

  params do
    required(:todo).schema do
      required(:title).filled(:string)
      required(:items).array(:hash) do
        required(:name).filled(:string)
      end
    end
  end
end

Вот мой config / errors.yml:

      vi:
  dry_validation:
    errors:
      rules:
        title:
          filled?: 'phai duoc dien'
          key?: 'ko dc trong'
        items:
          name:
            key?: 'thieu name'
            filled?: 'name rong'

В моем коде я использую его для проверки своих данных:

      my_json = create_my_json
v = ApplicationContract.new
result = v.call(my_json)
render json: result.errors(locale: :vi).to_h
  1. Если my_json нравится: {"title": "","items": [{"name": "bbb"}]}

тогда я получил ответ:

      {
    "todo": {
        "title": [
            "phai duoc dien"
        ]
    }
}

Вы, ребята, можете видеть, что моя проверка заголовка поля отлично работает с языковым стандартом vi

  1. Теперь, если мой json нравится: {"title": "aa","items": [{"name": ""}]}

тогда ответ:

      {
    "todo": {
        "items": {
            "0": {
                "name": [
                    "translation missing: vi.dry_validation.errors.filled?"
                ]
            }
        }
    }
}

Проверка все еще работает, но не может получить сообщение о моем языковом стандарте. Отображается предупреждение "отсутствует перевод: vi.dry_validation.errors.filled?" вместо. Как я могу исправить эту проблему?

1 ответ

Наконец то я понял. Просто удалите элементы узла из config/errors.yml:

      vi:
  dry_validation:
    errors:
      rules:
        title:
          filled?: 'phai duoc dien'
          key?: 'ko dc trong'
        name:
          key?: 'thieu name'
          filled?: 'name rong'
Другие вопросы по тегам