0
私は次のモデルがあります:私はここにactive_model_serializersバージョン0.10.6Railsの5つのJSON_APIシリアライザ
を使用しています
class Team < ApplicationRecord
# Associations
has_many :users
has_and_belongs_to_many :projects
belongs_to :team_leader, class_name: 'User'
end
は私のシリアライザのコードです:
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アプリケーション)に混乱を招きます。シリアライザの場合、タイプをオーバーライドする方法はありますか?
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
の存在を意味し、それは非常に単純なことがありますされていない場合、私は
動作しません。あなたの提案では、それはチームに属性を追加するが、チームの関係にはならない(それはjson-apiの応答として)。 – manosagent