如何序列化嵌套 has_many 关系
How to serialize nested has_many relations
在我的应用程序中,我有模型 Game,它与模型 Stage 和模型 有 has_many
关系]Stage 与模型 Winning 有 has_many
关系。
我在序列化时遇到问题,因为我希望得到如下所示的响应:
{
"game_id": 1,
"stages": [
{
"stage_id": 1,
"winnings": [
{
"winning_id": 1
},
{ ... }
]
},
{ ... }
]
}
然而,当我这样序列化它时:
class Admin::GameResultsSerializer < ActiveModel::Serializer
attribute :id
has_many :stages
class StageSerializer < ActiveModel::Serializer
attribute :id
has_many :winnings
class WinningSerializer < ActiveModel::Serializer
attribute :id
belongs_to :user
end
end
end
我没有 return 任何响应获胜 - 仅响应 return 有阶段的游戏,我不知道为什么。
希望得到帮助。
我做到了。关键是使用 include
方法在控制器的渲染中包含所需的表:
class Admin::GameResultsController < Admin::BaseController
def index
render json: Game.find(params[:game_id],
include: { stages: { winnings: :user } }
end
end
它成功了!
在我的应用程序中,我有模型 Game,它与模型 Stage 和模型 有 has_many
关系]Stage 与模型 Winning 有 has_many
关系。
我在序列化时遇到问题,因为我希望得到如下所示的响应:
{
"game_id": 1,
"stages": [
{
"stage_id": 1,
"winnings": [
{
"winning_id": 1
},
{ ... }
]
},
{ ... }
]
}
然而,当我这样序列化它时:
class Admin::GameResultsSerializer < ActiveModel::Serializer
attribute :id
has_many :stages
class StageSerializer < ActiveModel::Serializer
attribute :id
has_many :winnings
class WinningSerializer < ActiveModel::Serializer
attribute :id
belongs_to :user
end
end
end
我没有 return 任何响应获胜 - 仅响应 return 有阶段的游戏,我不知道为什么。
希望得到帮助。
我做到了。关键是使用 include
方法在控制器的渲染中包含所需的表:
class Admin::GameResultsController < Admin::BaseController
def index
render json: Game.find(params[:game_id],
include: { stages: { winnings: :user } }
end
end
它成功了!