簡體   English   中英

如何處理 ruby​​ on rails 6 中的驗證錯誤

[英]How do I handle validation errors in 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

您可以覆蓋默認的活動記錄翻譯:

---
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM