В некоторых случаях в JSON встроены вложенные ассоциации, в других - нет. Пока все хорошо, что ведет себя так, как я хочу. Но я хочу, чтобы в тех случаях, когда они не были внедрены, идентификаторы вложенных ассоциаций все еще испускаются.Включить идентификаторы вложенных ассоциаций в сериализаторах ActiveModel
Например:
class FooSerializer < ActiveModel::Serializer
attributes :id, :x, :y
belongs_to :bar
end
class BarSerializer < ActiveModel::Serializer
attributes :id, :z
end
Когда я сериализация Foo
объекта без include: [:bar]
Я хочу, чтобы результат выглядеть следующим образом:
{
"id": 123
"x": 1,
"y": 2,
"bar": 456
}
И если bar
бы полиморфное объединение Я хотел бы что-то вроде что:
{
"id": 123
"x": 1,
"y": 2,
"bar": {"id": 456, "schema": "Bar"}
}
A В конце концов, я хотел бы, чтобы идентификаторы были строками ("id": "123"
), потому что они должны быть черными ящиками для потребителя API и определенно не использовать тип JavaScript Number
(что равно double
точности с плавающей запятой!).
Как это сделать? Я не нашел никакой информации об этом.
Да, это та часть, и я поставил что-то подобное, что в 'BaseSerializer'. Но как насчет остальных? – panzi
Я отредактировал ответ. Однако я его не тестировал. – archana
Но я не могу это сделать в центральном месте, не повторяя это снова и снова в наших десятках сериализаторов с несколькими отношениями каждый? – panzi