ember-data:用于删除关联对象的服务器端代码

时间:2013-05-22 09:06:21

标签: ruby-on-rails ember.js ember-data ember-rails

我正在使用ember-data RESTAdapter的第12版并使用rails-api gem。

我有这些模特:

App.TransportDocumentRow = DS.Model.extend,
  productName: DS.attr 'string'
  transportDocument: DS.belongsTo('App.TransportDocument')

App.TransportDocument = DS.Model.extend
  number: DS.attr 'string'
  transportDocumentRows: DS.hasMany('App.TransportDocumentRow')

以这种方式配置:

DS.RESTAdapter.map 'App.TransportDocument', {
  transportDocumentRows: { embedded: 'always' }
}

(我正在使用embedded: always,因为如果我没有提交我的文档行,则会按照here

的要求提交document_id = 0

考虑我已经创建了一个包含2行的传输文档(id:1)。如果我删除一行(id为1),结果将是对/transport_documents/1的PUT请求。

使用此put发送的JSON将是这样的:

{"transport_document"=>
  {"number"=>"1", "transport_document_rows"=>
    [
      {"id"=>2, "product_name"=>"aaaa", "transport_document_id"=>1}
    ]
  }, "id"=>"1"
}

虽然rails会期望这样的事情:

{"transport_document"=>
  {"number"=>"1", "transport_document_rows"=>
    [
      {"id"=>1, "_delete"=>1}
      {"id"=>2, "product_name"=>"aaaa", "transport_document_id"=>1}
    ]
  }, "id"=>"1"
}

有没有在active_model_serializers中指定的方法来执行此操作? 或者我应该对我的控制器进行一些手动转换? 或者我应该更改有效负载,以便ember生成正确的请求吗?

0 个答案:

没有答案