Я использую active_model_serializers gem в первый раз. Версия который я использую 0.10.2Рельсы 4 AMS с тремя вложенными моделями
У меня есть три модели с ассоциациями, как это:
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": "....."
}
]
}
потому что просто добавление ассоциаций такие как я бы делал в моделях, не помогают для третьей ассоциации.
Любая помощь будет оценена!
Благодарим за отзыв. Да, я делал это раньше, но это обычай rails as_json method, он не имеет ничего общего с AMS. Я хотел узнать больше об AMS. – Santar