我希望能够在活动模型序列化程序中自定义json api适配器使用的id。
即,我有一个项目,其中序列化的特定模型的实际ruby-on-rails ID由于各种原因而不被视为面向公众,但是可以使用备用的面向公众的唯一标识符。
我想使用此标识符作为json api序列化内容的id,但我无法找出任何明显的方法来覆盖json api序列化程序中的ID。
基本上,给定模型[{ id: 1, alt_id: '2aef7e'}, { id: 2, alt_id: '3b47c0' } ...]
我想要一种创建序列化版本的方法:
{
"data":
[{
"id" : "2aef7e",
"type" : "my-model",
"attributes" : {...},
"relationships" : {...}
},{
"id" : "3b47c0",
"type" : "my-model",
"attributes" : {...},
"relationships" : {...}
}],
"included" : [ ... ]
}
而不是:
{
"data":
[{
"id" : "1",
"type" : "my-model",
"attributes" : {...},
"relationships" : {...}
},{
"id" : "2",
"type" : "my-model",
"attributes" : {...},
"relationships" : {...}
}],
"included" : [ ... ]
}
但一直无法找到覆盖序列化ID值的明显方法。
答案 0 :(得分:1)
您可以在序列化程序中定义一个方法,以避免使用对象的方法。
class MySerializer < ActiveModel::Serializer
attribute :id
def id
object.alt_id
end
end