1

我正在使用 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,因为如果我不使用 document_id = 0 提交我的文档行,如此处所

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

用这个 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 产生正确的请求?

4

0 回答 0