Как связать 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
}