我正在使用 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 产生正确的请求?