考虑以下两个实体:帖子,作者
null
使用'JSON'适配器,对于PostsController的索引操作,我们得到如下响应:
class PostSerializer < ActiveModel::Serializer
attributes :id, :title, author_id
belongs_to :author
end
Class AuthorSerializer < ActiveModel::Serializer
attributes :id, :name
end
是否可以将作者数据分组到帖子数据之外进行侧载? (如下图所示)
{
"posts":[
{
"id":1,
"title":"Hic consectetur et delectus",
"author_id": 1,
"author":{"id":1,"name":"Author-A"}
},
{
"id":2,
"title":"Hic consectetur et delectus",
"author_id": 2,
"author":{"id":2,"name":"Author-B"}
},
{
"id":3,
"title":"Hic consectetur et delectus",
"author_id": 1,
"author":{"id":1,"name":"Author-A"}
}
]
}
答案 0 :(得分:0)
好像你想模仿jsonapi包含的关系。所以,w json适配器,post有一个属性,为了保持简单,author_id,然后,你将作者与作者分开渲染并生成响应,或者你将它们混合并减少它们。您可能只能呈现为[帖子,作者]!
答案 1 :(得分:0)
作为一种解决方法,我们创建了一个自定义适配器,用于扩展Json适配器并在serializable_hash(...)方法中将哈希修改为所需格式
class CustomAdapter < ActiveModelSerializers::Adapter::Json
def serializable_hash(options = nil)
result_hash = super(options)
... code to modify hash format ...
result_hash
end
end