如何正确使用 has_many 在 json 中构建层次结构?



我想将 json 显示为分层模型,但我做错了......

谁能解释我做错了什么?

我有以下"序列化程序":

class ManagementSerializer < ActiveModel::Serializer
attributes :managmentstructure_id, :users_id, :full_name, :users_id_parent, :managements
def managements
object.managments.map do |managment|
ManagementSerializer.new(management, root: false)
end
end
end

和"控制器":

def index
@managments = Managment.all
render json: @managments
end

我得到的是:

1

{
"managmentstructure_id": 1,
"users_id": 32,
"full_name": "Test",
"users_id_parent": null
"managments": [
{
"managmentstructure_id": 2,
"users_id": 43,
"full_name": "Test2",
"users_id_parent": 32
"managments": [
{
"managmentstructure_id": 3,
"users_id": 58,
"full_name": "Test3",
"users_id_parent": 43
}
]
}
]
},

阿拉伯数字

{
"managmentstructure_id": 2,
"users_id": 43,
"full_name": "Test2",
"users_id_parent": 32
"managments": [
{
"managmentstructure_id": 3,
"users_id": 58,
"full_name": "Test3",
"users_id_parent": 43
}
]
},
{
"managmentstructure_id": 3,
"users_id": 58,
"full_name": "Test3",
"users_id_parent": 43
"managments": []
}

我的模型:

class Managment < ActiveRecord::Base
self.table_name = 'PROJECT.V_L_MANAGMENTSTRUCTURES'
self.primary_key = 'users_id'
has_many :managments, class_name: 'Managment',
foreign_key: "users_id_parent"
belongs_to :managment, class_name: 'Managment'
end

还是在"序列化程序"的帮助下无法做到这一点?

从外观上看,这就是我保留它的方式。

class ManagementSerializer < ActiveModel::Serializer
has_many :managements
attributes :managmentstructure_id, :users_id, :full_name, :users_id_parent, managements
def managements
object.managments.map do |managment|
ManagementSerializer.new(management, root: false).serializable_hash        
end
end
end

最新更新