次のシナリオがあります。RailsWebポータル(Rails 3.1)があり、RestKit 0.9.3(最新バージョン)を使用してiOSデバイスからポータルに接続しています。サーバーからのデータ構造をiOSデバイスのコアデータモデルにマッピングしたいと思います。モデルは次のように設計されています。
クラス
- ユーザー
- 役割
- 役職
- コメント
関係
- ユーザーには0または1つのロールがあります/ロールには複数のユーザーがいます
- ユーザーに複数の投稿があります/投稿に1人のユーザーがいます
- 投稿に複数のコメントがあります/コメントに1つの投稿があります
問題は、RestKitのリレーションのデフォルトのマッピングにより、巨大なメッセージと冗長な転送が発生することです。これは、ロールを送信/受信すると、すべてのユーザーも転送され、ユーザーを送信/受信すると、ロールがに追加されるためです。各ユーザー。ユーザー、投稿、コメントでも同じことが起こります。それはデータが多いだけであり、私が考える限り、最善の解決策は、参照されるIDを送信し、各タイプを転送することです。これは、iOSデバイスからサーバーにデータを送信するときにロールのIDをユーザーのフィールド「role_id」にマッピングすることで完全に機能します。これは、Railsがそれをどう処理するかを理解しているためです。したがって、リレーションはリレーションとしてではなく、IDフィールドとしてマッピングされます。しかし、サーバーからユーザーを受信すると、デバイスに存在しない場合、エラーが発生します。
そこで調査したところ、RestKitがロールの主キーのみを送信するように、リレーションをマッピングして主キーのマッピングを使用できることがわかりました。しかし今、Railsはそれをどうするかを理解していません。これは次のようになります。
{"id":1、 "uid": "my_user_name"、 "pwd": "my_password"、 "role":{"id":0}}
しかし、Railsはそのようなものを期待しています:
{"id":1、 "uid": "my_user_name"; "pwd": "my_password"、 "role_id":0}
それが私の現状であり、この誤解を解決する方法が本当にわかりません。
助けていただければ幸いです。