是否有办法更改JSON的常规验证错误的结构,例如
存在和独特性
我在带有presence_validator.rb的模型文件夹中有以下代码
class PresenceValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value.present?
record.errors[attribute] << (options[:message] || "is not present")
end
end
end
但这似乎与消息无关。
我希望错误格式如下:
{
"errors": [
{ "key": "aaass", "value": "adasasdas" },
{ "key": "aadaass", "value": "adasas132das" }
]
}
当前的JSON失败:
{
"name": [
"Requires name"
]
}
答案 0 :(得分:1)
首先 - 它不适合这种变化。错误结构应保持原样,您希望更改错误json表示。为此你需要一些猴子补丁:
class ActiveModel::Errors
def as_json(options={})
{
errors: map {|key, value| {key: key, value: value } }
}
end
end
将此代码放在config/initializers/errors_extensions.rb
中,并且所有代码都应按照规范运行。