1
我想在序列化器和啓用json_api適配器中的關係使用自定義序列化器。但是,這些關係沒有正確序列化(或者更好,根本不顯示/序列化)。主動模型序列化器不能使用json_api適配器
PostController.rb
def index
render json: Post.all, each_serializer: Serializers::PostSerializer
end
串行
module Api
module V1
module Serializers
class PostSerializer < ActiveModel::Serializer
attributes :title, :id
belongs_to :author, serializer: UserSerializer
has_many :post_sections, serializer: PostSectionSerializer
end
end
end
end
JSON輸出:
{
"data": [
{
"attributes": {
"title": "Test Title"
},
"id": "1",
"relationships": {
"author": {
"data": {
"id": "1",
"type": "users"
}
},
"post_sections": {
"data": [
{
"id": "1",
"type": "post_sections"
}
]
}
},
"type": "posts"
}
]
}
,你可以看,關係沒有履行,只有當我指定一個自定義序列化程序爲關係發生!
如果我做這樣的事情:
module Api
module V1
module Serializers
class PostSerializer < ActiveModel::Serializer
attributes :title, :id
belongs_to :author # no custom serializer!
has_many :post_sections # no custom serializer!
end
end
end
end
的關係被正確顯示,但不使用自定義序列...... 有什麼問題嗎?
編輯
按照json API 1.0 Format,我所取回的是所謂的resource identifier object
。
以下主數據是一個單一的資源標識符對象 引用相同資源:
{ 「數據」:{ 「類型」: 「物品」, 「ID」: 「1」 }}
有沒有辦法阻止獲取資源標識符對象,並獲得實際的數據?
@克里斯 - 彼得斯或布魯諾:有T A方式o在序列化程序中默認包含關聯,而不必在每個我們稱之爲渲染的地方在控制器中執行它們。是否有一個include選項可以添加到序列化器中的has_one/has_many關聯中? – geoboy
@geoboy看起來像別人今天有同樣的想法:https://github.com/rails-api/active_model_serializers/issues/1333這個問題表明,這種事情還沒有可用。 –