如何序列化嵌套 has_many 关系

How to serialize nested has_many relations

在我的应用程序中,我有模型 Game,它与模型 Stage 和模型 has_many 关系]Stage 与模型 Winninghas_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

它成功了!