如何将 Rails Grape API 与 Ember 反身模型连接起来

szs*_*ppa 5 json ruby-grape ember.js ember-data grape-entity

我在将来自 Grape(用 Grape 实体序列化)的 Json 有效负载与 Ember 反射模型连接时遇到问题。模型看起来像这样:

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse 'children'
}
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,我正在尝试对类别-子类别关系进行建模。来自端点的示例 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
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

有警告信息:

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"))
Run Code Online (Sandbox Code Playgroud)

正如它在 ActiveModelAdapter 文档中所说,它应该提供嵌套资源的 id 和带有侧载数据的父资源的 id。问题是 ember Inspector 中只有一个类别记录,但没有相关的子项。

我还尝试制作两个模型:类别和子类别,并为其他 ids/id 命名提供相同的有效负载,我可以看到在这种情况下,所有需要的子类别记录但不是类别的 hasMany(两个单独的数据)。

Nat*_*ouy 1

问题可能来自于您忘记在第二个逆元前面放置双点:

改变

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse 'children' #here
}
Run Code Online (Sandbox Code Playgroud)

Category = DS.Model.extend {
  name: DS.attr 'string',
  children: DS.hasMany 'category', inverse: 'parent',
  parent: DS.belongsTo 'category', inverse: 'children' #here
}
Run Code Online (Sandbox Code Playgroud)