Используя 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: {}
}
Как я могуустановить корневой каталог по умолчанию для моего сериализатора?
(или модель, контроллер или приложение, если это будет предпочтительнее)