【发布时间】:2016-08-21 20:49:30
【问题描述】:
我是第一次使用 active_model_serializers gem。我正在使用的版本是 0.10.2
我有三个具有如下关联的模型:
class Song < ActiveRecord::Base
has_many :questions
end
class Question< ActiveRecord::Base
belongs_to :song
has_many :answers
end
class Answer< ActiveRecord::Base
belongs_to :question
end
我已经生成了三个这样的序列化器:
class SongSerializer < ActiveModel::Serializer
attributes :id, :audio, :image
has_many :questions
end
class QuestionSerializer < ActiveModel::Serializer
attributes :id, :text
belongs_to :song
has_many :answers
end
class AnswerSerializer < ActiveModel::Serializer
attributes :id, :text
belongs_to :question
end
但不幸的是,我的 json 响应没有显示问题的答案,但显示了歌曲和问题。
经过一番谷歌搜索后,我尝试添加 ActiveModelSerializers.config.default_includes = '**' 或来自这样的文档:
class Api::SongsController < ApplicationController
def index
songs = Song.all
render json: songs, include: '**' #or with '*'
end
end
但这导致我堆栈级别太深的错误
那么我应该怎么做才能让 json 响应看起来像这样 -
{
"id": "1",
"audio": "...",
"image": "...",
"questions": [
{
"id": "1",
"text": ".....",
"answers": [
{
"id": "1",
"text": "...."
},
{
"id": "2",
"text": "..."
}
]
},
{
"id": "2",
"text": "....."
}
]
}
因为像我在模型中那样简单地添加关联对第三个关联没有帮助。
任何帮助将不胜感激!
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 active-model-serializers