activemodel序列化程序has_one具有自定义根名称

时间:2014-08-07 09:17:35

标签: ruby-on-rails ruby ruby-on-rails-4 active-model-serializers

我的序列化程序中存在has_one关系,但设置root: :some_other_root似乎没有任何区别。我在文档中看到他们只使用root名称has_many。所以问题是可能在has_one上有不同的根名称吗?

下式给出:

class UserSerializer < ActiveModel::Serializer
  attributes :id
  has_one :address, root: :primary_address
end

返回:

{"user":{"id": 12, "address":{"id":5,"company_name":"widgets co"}}}

预期:

{"user":{"id": 12, "primary_address":{"id":5,"company_name":"widgets co"}}}

1 个答案:

答案 0 :(得分:9)

如果它将作为用户属性的一部分包含在内,请使用key代替root。宝石仓库中有一个thorough explanation on how to embed associations。示例如下所示:

  

在序列化程序中: attribute :title, key: :name
   #attributes: { name: 'Some Title' }