Сообщение сухой проверки 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
- Если my_json нравится: {"title": "","items": [{"name": "bbb"}]}
тогда я получил ответ:
{
"todo": {
"title": [
"phai duoc dien"
]
}
}
Вы, ребята, можете видеть, что моя проверка заголовка поля отлично работает с языковым стандартом vi
- Теперь, если мой 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'