Как связать Rails Grape API с рефлексивной моделью Ember

У меня проблема с подключением Json из Grape (сериализовано с Grape entity) с рефлексивной моделью Ember. Модель выглядит так:

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse 'children'
}

Итак, как вы можете видеть, я пытаюсь смоделировать здесь отношение категория-подкатегория. Пример ответа json от конечной точки:

{
  "category": {
    "id": 1,
    "name": "Sport",
    "child_ids": [
      5,
      6,
      8,
      7
    ]
  },
  "children": [
    {
      "id": 5,
      "name": "Basketball",
      "parent_id": 1
    },
    {
      "id": 6,
      "name": "Football",
      "parent_id": 1
    },
    {
      "id": 8,
      "name": "Running",
      "parent_id": 1
    },
    {
      "id": 7,
      "name": "Volleyball",
      "parent_id": 1
    }
  ]
}

Предупреждающее сообщение:

WARNING: Encountered "children" in payload, but no model was found for model name "child" (resolved model name using mateby-front@serializer:-active-model:.modelNameFromPayloadKey("children"))

Как сказано в документации для ActiveModelAdapter, он должен предоставить идентификаторы для вложенного ресурса и идентификатор для родительского ресурса с загруженными данными. Проблема в том, что в инспекторе тлеющих углей есть одна запись категории, но без родственных детей.

Я также попытался создать две модели: категорию и подкатегорию и обеспечить одинаковую полезную нагрузку с другими именами идентификаторов / идентификаторов, и я мог видеть, что в этой ситуации были все необходимые записи подкатегории, но не как hasMany для категории (две отдельные данные).

1 ответ

Проблема может быть связана с тем, что вы забыли поставить двойную точку перед вторым обратным:

менять

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse 'children' #here
}

в

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse: 'children' #here
}
Другие вопросы по тегам