我有以下场景:我有一个 Rails Web 门户(Rails 3.1),我使用 RestKit 0.9.3(最新版本)从 iOS 设备连接门户。我想将数据结构从服务器映射到 iOS 设备上的核心数据模型。模型设计如下:
课程
- 用户
- 角色
- 邮政
- 评论
关系
- 一个用户有零个或一个角色/一个角色可以有多个用户
- 一个用户有多个帖子/一个帖子有一个用户
- 一个帖子有多个评论/一个评论有一个帖子
问题是,RestKit 中关系的默认映射会导致大量消息和冗余传输,因为当我发送/接收角色时,所有用户也将被传输,如果我发送/接收用户,角色被添加到每个用户。用户、帖子和评论也是如此。这只是很多数据,就我所能想到的而言,最好的解决方案就是发送 ID,这些 ID 被引用并传输每种类型。当我通过将角色的 ID 映射到用户中的字段“role_id”将数据从 iOS 设备发送到服务器时,这非常有效,因为 Rails 确实知道如何处理它。所以关系没有被映射为关系,而只是作为 ID 字段。但是当我从服务器接收用户时,设备上不存在这些用户,我收到一个错误,
所以我研究发现你可以映射关系并使用主键的映射,这样RestKit只会发送角色的主键。但是现在 Rails 不明白如何处理它。它看起来像这样:
{ "id":1, "uid":"my_user_name", "pwd":"my_password", "role": { "id":0 } }
但 Rails 期待这样的事情:
{ "id":1, "uid":"my_user_name"; “密码”:“我的密码”,“角色 ID”:0 }
这就是我现在的状态,我真的不知道如何解决这个误解。
我将非常感谢任何帮助!