Ember.js 正在覆盖的余烬数据关系

Ember.js 正在覆盖的余烬数据关系,ember.js,ember-data,Ember.js,Ember Data,我现在在两个不同的实例中遇到了这个问题,但它们都是相同的问题。首先,这里是我的一个问题实例模型: 主持人: 工作: 我的作业模型接收的JSON: { "jobs":[ { "id":"94e81ce07cec25451ce711fce3d96bea", "name":"uname -a", "command":"uname -a", "created_at":"2014-03-10T16:25:08Z", "host":{

我现在在两个不同的实例中遇到了这个问题,但它们都是相同的问题。首先,这里是我的一个问题实例模型:

主持人:

工作:

我的作业模型接收的JSON:

{
  "jobs":[
    {
      "id":"94e81ce07cec25451ce711fce3d96bea",
      "name":"uname -a",
      "command":"uname -a",
      "created_at":"2014-03-10T16:25:08Z",
      "host":{
        "id":8,
        "hostname":"lucid32",
        "name":"lucid32",
        "created_at":"2014-03-08T18:13:52Z"
      },
      "executions":[
        {
          "id":406,
          "job_id":"94e81ce07cec25451ce711fce3d96bea",
          "host_id":8,
          "created_at":"2014-03-09T18:15:28Z",
          "started_at":"2014-03-09T18:15:28Z",
          "finished_at":"2014-03-09T18:15:28Z",
          "exit_status":0
        }
      ]
    }
  ]
}
主机模型接收的JSON为:

{
  "hosts":[
    {
      "id":8,
      "hostname":"lucid32",
      "name":"lucid32",
      "created_at":"2014-03-08T18:13:52Z",
      "jobs":[
        {
          "id":"94e81ce07cec25451ce711fce3d96bea",
          "name":"uname -a",
          "command":"uname -a",
          "host_id":8,
          "created_at":"2014-03-10T16:25:08Z"
        }
      ]
    }
  ]
}
我遇到的问题是,当我的主机模型被加载时,作业模型的主机关系似乎被覆盖。我认为这是因为在JSON中,主机拥有的每个作业都有host_id参数,而ember基本上什么都没有替换它所知道的关于该主机的现有数据。我的API是一个Sinatra应用程序,使用activerecord和activemodel将我的模型序列化为JSON,因此我没有一种简单的方法从响应中删除主机id

值得注意的是,我在这里使用的是自定义序列化程序,没有它,我无法让Ember识别我的侧载数据

几天来,我一直在努力解决这个问题,但我完全没有主意:(

如果您有任何问题,请告诉我是否有帮助。我的应用程序的完整源代码位于GitHub上


谢谢!

您可以将活动模型序列化器gem添加到Sinatra应用程序中,并从响应中删除主机id:

class JobSerializer < ActiveModel::Serializer 

  attributes :created_at, :started_at, :finished_at, :exit_status

end
类JobSerializer这正是我正在做的,请参阅:。当作业已嵌套在其他内容(如我的示例hosts JSON)中时,activemodel似乎只添加主机id,而不是完整的主机对象。
{
  "hosts":[
    {
      "id":8,
      "hostname":"lucid32",
      "name":"lucid32",
      "created_at":"2014-03-08T18:13:52Z",
      "jobs":[
        {
          "id":"94e81ce07cec25451ce711fce3d96bea",
          "name":"uname -a",
          "command":"uname -a",
          "host_id":8,
          "created_at":"2014-03-10T16:25:08Z"
        }
      ]
    }
  ]
}
class JobSerializer < ActiveModel::Serializer 

  attributes :created_at, :started_at, :finished_at, :exit_status

end