我有两个关联的模型,parent= Activity
,并且它与Cost有很多关联。
我进行API调用以获取使用序列化程序的活动详细信息,并且还希望添加已序列化的成本。所以在ActivitySerializer中我试过这个:
Class ActivitySerializer: < ActiveModel::Serializer
ActiveModel::Serializer.config.key_transform = :unaltered
attributes :id,
:name,
:description
...
has_many costs, each_serializer: CostSerializer
end
CostSerializer如下所示:
class CostSerializer < ActiveModel::Serializer
ActiveModel::Serializer.config.key_transform = :unaltered
attributes :id,
:amount,
:description
end
结果是活动数据看起来不错,但费用数据给了我这个:
relationships":{"costs":{"data":[{"id":"20","type":"costs"}]}
不确定为何数量和描述会被取消。 如果我这样做,它可以工作(将listCosts添加到ActivitySerializer中的属性):
def listCosts
object.costs.map do |cost|
CostSerializer.new(cost, scope:scope, root: false, event: object)
end
end
输出有点不同,没有关系,但确实有我想要的序列化程序属性。 我正在使用Rails 5.1.3和AMS 0.10。
答案 0 :(得分:0)
我假设你正在使用json_api适配器。根据{{3}}中JSON API规范的示例,可以通过“included”属性公开除关联模型的“type”和“id”之外的任何其他属性。你可以查看讨论 http://jsonapi.org/examples/