我正在使用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
考虑我已经创建了一个包含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生成正确的请求吗?