ruby-on-rails - 如何处理 ruby on rails 6 中的验证错误
问题描述
我是 ruby 的新手,我正在研究一个错误结构,作为对我的 api 的响应。目前,验证错误返回如下:
{
"status": 400,
"message": "Profile update was unsuccessfull",
"errors": {
"first_name": [
"is too short (minimum is 3 characters)"
],
"phone_number": [
"Enter a valid us phone number"
]
}
}
但我想要类似的东西:
{
"status": 400,
"message": "Profile update was unsuccessfull",
"errors": {
"first_name": "firstname "is too short (minimum is 3 characters)",
"phone_number": "Enter a valid us phone number"
}
}
我的模型:
validates :first_name, :last_name, :state, :referral_method, presence: true, length: { minimum: 3, maximum: 25 }
validates :phone_number, format: { with: VALID_PHONE_REGEX, message: "Enter a valid us phone number" }, if: :phone_number_changed?
控制器:
# Handle validation errors
rescue_from ActiveRecord::RecordInvalid do |exception|
messages = exception.record.errors.messages
messages.map {|k,v| messages[k]=v[0] }
@response = { status: Status.bad_request, message: Message.profile_not_updated,
errors:messages}
json_response(@response, :bad_request)
end
解决方案
您可以覆盖默认的活动记录翻译:</p>
---
en:
activerecord:
errors:
models:
user:
attributes:
first_name:
too_short: First name is too short (minimum is 3 characters)
phone_number:
too_short: Enter a valid us phone number
您可以在此处深入了解文档: https ://guides.rubyonrails.org/i18n.html#error-message-scopes
推荐阅读
- php - 在匹配的文本中执行多个 preg_replace
- c# - 错误“列名或提供的值的数量与表定义不匹配”
- python - 如何在 python 中将数据插入到单链表的中间?
- python - Python字典打破了python的规律
- ios - 如何在iOS swift中进行产品搜索api?
- c - 这个值是多少?
- math - 可以在任何编程语言中轻松解析和计算的最标准数学符号是什么?
- python - 在 django bulk_create 中获取 IntegrityError 的键
- javascript - 基于 Angular/ChartJS 中的 API 动态更新图形(移动线图)
- javascript - 使用 webpack 在 Django 服务器上运行 React App 的问题