[英]Rails validation error messages: Add response code to default validators
我正在尋找一個最佳實踐/解決方案來呈現響應不同的http響應代碼而不是422 - 不可處理的實體。
我有一個簡單的驗證器:
validates :name, presence: true, uniqueness: {message: 'duplicate names are not allowed!'}
我想在此驗證失敗時返回狀態代碼409 - 沖突(:沖突)。 可能的方法:
errors.add(status_code: '409')
。 然后從錯誤中呈現狀態代碼,或者如果存在多個則呈現422。 上述解決方案的問題是我不知道如何在'標准'驗證器上調用errors.add
函數。
我的渲染代碼:
if model.save
render json: model, status: :created
else
render json: model.errors, status: :unprocessable_entity
end
我想擴展它可以根據驗證結果呈現不同的狀態代碼。
在這種情況下,創建自定義驗證器可能是一種方法,您可以始終擴展復雜性
validates_with NameValidator
自定義驗證器
class NameValidator < ActiveModel::Validator
def validate(record)
if record.blank? || Model.where(name: record.name).exists?
record.errors.add(:base, "Duplicate names not allowed!")
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.