我有一个使用嵌套属性的Rails项目,因此在PUT请求期间,它需要知道要删除哪些子对象。例如,这是我需要发送的请求:
{
"playlist": {
"name": "Playlist Name",
"playlist_artists_attributes": [
{
"id": 1087,
"artist_id": 1208,
},
{
"id": 1086,
"artist_id": 1207,
"_destroy": true
}
],
}
}
我目前正在使用RestKit的默认对象序列化,它发送如下请求:
{
"playlist": {
"name": "Playlist Name",
"playlist_artists_attributes": [
{
"id": 1087,
"artist_id": 1208,
}
],
}
}
如您所见,它只发送我想要在编辑播放列表时保留的艺术家。是否有一种简单的方法来改变RestKit的对象序列化,以支持添加一个_destroy标志删除艺术家(我想不是因为我需要保持删除艺术家信息),或者是否更容易改变Rails应用程序如何处理这个对象的PUT请求?
假设你有能力改变模型和你要去PUT
的对象的playlist_artists_attributes
,我将在playlist_artists_attributes
列表中为对象添加一个瞬态属性,称为destroyDuringUpload
。在序列化映射中,映射@"destroyDuringUpload" : @"_destroy"
,然后添加对象并标记要销毁的项目,这样就完成了。