Как я могу переопределить active_model_serializer json_key для моего приложения? - PullRequest
0 голосов
/ 12 октября 2018

Используя ActiveModelSerializer , я хотел бы сериализовать ресурс моих книг для всех запросов, например, для /books и /books/:id, с единичным ключом payload и затем возвращенными данными.

/ books

{
 payload: [{},{},{}]
{

/ books /: id

{
 payload: {}
{

Что я пробовал:

1.Использование :json_api адаптера

ActiveModelSerializers.config.adapter = :json_api

Будет применена клавиша data.

{
   data: [{},{},{}]
}

{
   data: {}
}

2.Используя json адаптер и root в контроллере

ActiveModelSerializers.config.adapter = :json

Я могу указать root

render json: Book.all, root: 'payload'

Возвращает по желанию

{
   payload: [{},{},{}]
}

{
   payload: {}
}

НоЯ бы предпочел не повторять это на каждом рендере.

3.Использование адаптера json и переопределение json_key

 class BookSerializer < ActiveModel::Serializer
  def json_key
    'payload'
  end
end

Мне понравилось это решение, за исключением того, что оно возвращает множественное число payload при сериализации массива или ресурсов

{
   payloads: [{},{},{}]
}

{
   payload: {}
}

Как я могуустановить корневой каталог по умолчанию для моего сериализатора?

(или модель, контроллер или приложение, если это будет предпочтительнее)

...