活动模型序列化程序has_many关联不起作用

时间:2017-10-19 20:01:19

标签: ruby-on-rails has-many active-model-serializers

我有两个关联的模型,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。

1 个答案:

答案 0 :(得分:0)

我假设你正在使用json_api适配器。根据{{​​3}}中JSON API规范的示例,可以通过“included”属性公开除关联模型的“type”和“id”之外的任何其他属性。你可以查看讨论 http://jsonapi.org/examples/