У меня возникли проблемы с использованием ActiveModelSerializer для правильной сериализации моей модели.Настройка выглядит следующим образом:
# controllers/posts_controller.rb
class PostsController < ApplicationController
def index
render json: @posts, each_serializer: PostSerializer, include: %w(comments), fields: post_fields
end
private
def post_fields
{ posts: [:name, :content, :author] }
end
end
# serializers/post_serializer.rb
class PostSerializer < ActiveModelSerializer
attributes :name, :content, :author
has_many :comments, serializer: CommentSerializer
end
Когда я делаю запрос к конечной точке posts#index
, я ожидаю ответ JSON, который отформатирован в спецификации JSON-API, как показано ниже:
{
"data": {
"type": "post",
"id": 1,
"attributes": {
"name": "My first post",
"author": "Mr. Glass",
"content": "This is my first post ..."
},
"relationships": {
"comments": {
"data": {
"id": 1,
"type": "comments"
}
}
}
},
"included": {
"type": "comments",
"id": 1,
"attributes": {
"content": "First!"
}
}
}
Однако фактический ответ таков:
{
"data": {
"type": "post",
"id": 1,
"attributes": {
"name": "My first post",
"author": "Mr. Glass",
"content": "This is my first post ..."
}
},
"included": {
"type": "comments",
"id": 1,
"attributes": {
"content": "First!"
}
}
}
И весь блок отношений просто отсутствует.Есть ли способ заставить блок отношений в реальном ответе появиться снова?