如何使用活动模型序列化程序自定义 json-api 序列化模型的 ID?
How do I customize the id of a json-api serialized model with active model serializers?
我希望能够在活动模型序列化程序中自定义与 json api 适配器一起使用的 ID。
也就是说,我有一个项目,由于各种原因,正在序列化的特定模型的实际 ruby-on-rails ID 不被视为面向 public,但是另一个 public 面向的唯一标识符可用。
我想使用此标识符作为 json api 序列化内容的 ID,但我无法找出任何明显的方法来覆盖 [=30] 中的 ID =] api 序列化程序。
基本上,给定模型 [{ 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 值。
您可以在序列化程序中定义一个方法以避免使用对象的方法。
class MySerializer < ActiveModel::Serializer
attribute :id
def id
object.alt_id
end
end
我希望能够在活动模型序列化程序中自定义与 json api 适配器一起使用的 ID。
也就是说,我有一个项目,由于各种原因,正在序列化的特定模型的实际 ruby-on-rails ID 不被视为面向 public,但是另一个 public 面向的唯一标识符可用。
我想使用此标识符作为 json api 序列化内容的 ID,但我无法找出任何明显的方法来覆盖 [=30] 中的 ID =] api 序列化程序。
基本上,给定模型 [{ 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 值。
您可以在序列化程序中定义一个方法以避免使用对象的方法。
class MySerializer < ActiveModel::Serializer
attribute :id
def id
object.alt_id
end
end