Ruby on rails 当使用accepts_nested_attributes_时,如何将错误呈现为嵌套哈希而不是单级哈希?
在我的Rails应用程序中,我有两个模型,它们有许多/属于关系-Ruby on rails 当使用accepts_nested_attributes_时,如何将错误呈现为嵌套哈希而不是单级哈希?,ruby-on-rails,serialization,nested-attributes,rails-api,Ruby On Rails,Serialization,Nested Attributes,Rails Api,在我的Rails应用程序中,我有两个模型,它们有许多/属于关系-Farmer和Animal class Farmer has_many :animals accepts_nested_attributes_for :animals end class Animal belongs_to :farmer validates_numericality_of :age, less_than: 100 end 我想为Farmer实现create方法,该方法也将创建嵌套动物 class
Farmer
和Animal
class Farmer
has_many :animals
accepts_nested_attributes_for :animals
end
class Animal
belongs_to :farmer
validates_numericality_of :age, less_than: 100
end
我想为Farmer
实现create
方法,该方法也将创建嵌套动物
class FarmerController < ApplicationController
def create
@farmer = Farmer.new(farmer_params)
if @farmer.save
render json: @farmer
else
render json: { errors: @farmer.errors }, status: :unprocessable_entity
end
end
private
def farmer_params
params.require(:farmer).permit(
:name,
{ animals_params: [:nickname, :age] }
)
end
end
我得到这个错误:
{
"errors": {
"animals.age": [
"must be less than 100"
]
}
}
但我希望将错误作为嵌套哈希(前端需求的原因)获取,如下所示:
{
"errors": {
"animals":[
{
age: [
"must be less than 100"
]
}
]
}
}
如何实现这一点?没有找到标准的方法,所以我用自己的解析器解决了这个问题
{
"errors": {
"animals":[
{
age: [
"must be less than 100"
]
}
]
}
}