活动模型序列化器 has_many 个关联
Active Model Serializers has_many associations
我正在使用 gem active_model_serializers
。
序列化程序:
class ProjectGroupSerializer < ActiveModel::Serializer
attributes :id, :name, :description
has_many :projects
end
class ProjectSerializer < ActiveModel::Serializer
attributes :id, :name, :description
belongs_to :project_group
end
控制器:
def index
@project_groups = ProjectGroup.all.includes(:projects)
render json: @project_groups, include: 'projects'
end
我收到以下[=35=]回复:
{
"data": [
{
"id": "35",
"type": "project_groups",
"attributes": {
"name": "sdsdf",
"description": null
},
"relationships": {
"projects": {
"data": [
{
"id": "1",
"type": "projects"
},
{
"id": "2",
"type": "projects"
}
]
}
}
}
],
"included": [
{
"id": "1",
"type": "projects",
"attributes": {
"name": "qweqwe",
"description": null,
"project_group_id": 1
},
"relationships": {
"project_group": {
"data": {
"id": "1",
"type": "project_groups"
}
}
}
},
{
"id": "2",
"type": "projects",
"attributes": {
"name": "ewe",
"description": null,
"project_group_id": 2
},
"relationships": {
"project_group": {
"data": {
"id": "2",
"type": "project_groups"
}
}
}
}
]
}
我想检索关系对象内的关联,而不是外部(在included
array
) 就像我收到的回复一样。可能吗?
PS1: belongs_to 关联工作正常,关联来自 relationships object,如文档中所示。
PS2:我想这样做是因为我有 3 或 4 个关联,我想从每个对象访问它们。这样我得到的回复将是一团糟。
您可以像这样手动定义项目。
class ProjectGroupSerializer < ActiveModel::Serializer
attributes :id, :name, :description, :projects
def projects
object.projects.map do |project|
::ProjectSerializer.new(project).attributes
end
end
结束
我正在使用 gem active_model_serializers
。
序列化程序:
class ProjectGroupSerializer < ActiveModel::Serializer
attributes :id, :name, :description
has_many :projects
end
class ProjectSerializer < ActiveModel::Serializer
attributes :id, :name, :description
belongs_to :project_group
end
控制器:
def index
@project_groups = ProjectGroup.all.includes(:projects)
render json: @project_groups, include: 'projects'
end
我收到以下[=35=]回复:
{
"data": [
{
"id": "35",
"type": "project_groups",
"attributes": {
"name": "sdsdf",
"description": null
},
"relationships": {
"projects": {
"data": [
{
"id": "1",
"type": "projects"
},
{
"id": "2",
"type": "projects"
}
]
}
}
}
],
"included": [
{
"id": "1",
"type": "projects",
"attributes": {
"name": "qweqwe",
"description": null,
"project_group_id": 1
},
"relationships": {
"project_group": {
"data": {
"id": "1",
"type": "project_groups"
}
}
}
},
{
"id": "2",
"type": "projects",
"attributes": {
"name": "ewe",
"description": null,
"project_group_id": 2
},
"relationships": {
"project_group": {
"data": {
"id": "2",
"type": "project_groups"
}
}
}
}
]
}
我想检索关系对象内的关联,而不是外部(在included
array
) 就像我收到的回复一样。可能吗?
PS1: belongs_to 关联工作正常,关联来自 relationships object,如文档中所示。
PS2:我想这样做是因为我有 3 或 4 个关联,我想从每个对象访问它们。这样我得到的回复将是一团糟。
您可以像这样手动定义项目。
class ProjectGroupSerializer < ActiveModel::Serializer
attributes :id, :name, :description, :projects
def projects
object.projects.map do |project|
::ProjectSerializer.new(project).attributes
end
end
结束