我有以下型号:
class Team < ApplicationRecord
# Associations
has_many :users
has_and_belongs_to_many :projects
belongs_to :team_leader, class_name: 'User'
end
我使用 active_model_serializers 版本 0.10.6
以下是我的序列化程序中的代码:
class TeamSerializer < ActiveModel::Serializer
attributes :id, :name, :can_delete, :can_edit
has_many :projects
has_many :users
belongs_to :team_leader
end
以下是序列化的结果:
{
"data":[
{
"id":"1",
"type":"teams",
"attributes":{
"name":"OA",
"can-delete":true,
"can-edit":true
},
"relationships":{
"projects":{
"data":[
{
"id":"2",
"type":"projects"
}
]
},
"users":{
"data":[
{
"id":"25",
"type":"users"
}
]
},
"team-leader":{
"data":{
"id":"25",
"type":"team-leaders"
}
}
}
}
]
}
我遇到的问题是“team_leader”关系,因为我预计它是“user”类型,但事实并非如此。它属于团队领导者类型,但我没有模型团队负责人,这在我的前端应用程序(这是一个ember 2.14应用程序)中造成了混乱。对于序列化程序,是否有办法仅覆盖关系的类型?如果没有,我愿意接受任何建议以解决这个问题...
答案 0 :(得分:0)
试试这个:
class TeamSerializer < ActiveModel::Serializer
attributes :id, :name, :can_delete, :can_edit
has_many :projects
has_many :users
attribute :team_leader do
team_leader = object.team_leader
UserSerializer.new(team_leader) if team_leader
end
end
这意味着UserSerializer
当然存在,但它可能非常简单,例如:
class UserSerializer < ActiveModel::Serializer
attributes :id, :foo, :bar, :etc
end