jsonapi и active_mode_serializers, как получить атрибуты отношений в ответе?

технический контекст: rails 4.2.2, active_model_serializers 0.10.0.rc2 Учитывая корзину и список продуктов, когда я добавляю продукт в корзину, я ожидаю получить ответ:

{
"data": {
  "id": "575",
  "type": "carts",
  "attributes": {
    "name": "cart 1"
  },
  "relationships": {
    "cart_products": {
      "data": [
        {
          "type": "cart_products",
          "id": "32",
          "attributes": {
            "product_id": 456
          }
        }
      ]
    }
  }
}
}

к сожалению, текущий ответ

{
"data": {
"id": "575",
"type": "carts",
"attributes": {
  "name": "cart 1"
},
"relationships": {
  "cart_products": {
    "data": [
      {
        "type": "cart_products",
        "id": "32",

      }
    ]
  }
}

} }

есть ли способ отображать атрибуты отношений?


person Alpha    schedule 22.07.2015    source источник
comment
Получили решение??   -  person shivaP    schedule 02.02.2016


Ответы (2)


Спецификация JSON:API объясняет, какими должны быть данные отношений. То, о чем вы просите, на самом деле предназначено для вложения или, что еще лучше, «включено» в соответствии со спецификацией.

Я бы посоветовал вам немного почитать там http://jsonapi.org/format/#document-compound-documents для получения более подробной информации о спецификации относительно включенных/вложенных отношений

Кроме того, что касается вашего вопроса, вам нужно указать сериализатору отображать включенные элементы, например: render @posts, include: ['authors', 'comments'] См. здесь дополнительную информацию: https://github.com/rails-api/active_model_serializers

person infinityzxx    schedule 28.07.2015
comment
привет @infinityzxx: я добавил команду, такую ​​​​как ветка рендеринга, включая: ['installations'] в моем контроллере. Но я не получил все атрибуты таблицы установок. Я что-то пропустил - person shivaP; 02.02.2016
comment
Я, к сожалению, не гуру рельсов, я бы предложил вам создать свой собственный вопрос по теме. - person infinityzxx; 04.02.2016

Согласно руководству:

render json: @posts, include: ['author', 'comments', 'comments.author']
  # or
render json: @posts, include: 'author,comments,comments.author'

Подробнее:

  1. http://jsonapi.org/format/#document-compound-documents
  2. https://github.com/rails-api/active_model_serializers/blob/a032201a91cbca407211bca0392ba881eef1f7ba/docs/general/adapters.md#included
person Sergey    schedule 27.11.2016