0

Web サイト用の Rest API を作成しました。現在、ユーザーが所有できる多くのコンピューターを所有できるようにしています。コンピューターでユーザー アカウントを更新する json ペイロードを送信しようとしています。テストのために、これは私が送るものです:

 {"auth_token"=>"AiprpscAqN6hnvNDHSwh",
 "user"=>"{"id":1,
 "username":"Rizowski",
 "email":"test@gmail.com",
 "computer":[{"id":0,
    "user_id":1,
    "name":"Desktop",
    "enviroment":"Windows 8",
    "ip_address":"192.168.1.10",
    "account":[]}]}",
 "format"=>"json",
 "id"=>"1"}

送信すると、Rails コントローラーがそれを受信し、JSON.parse メソッドを使用してリクエストをハッシュに解析します。ユーザーオブジェクトを保存しようとすると、次のように表示されます。

ActiveRecord::AssociationTypeMismatch in Api::V1::UsersController#update 
Computer(#51701664) expected, got Hash(#17322756)

補足質問: 私はまだ Rails と Rest を完全に理解しようとしていますが、コンピューター オブジェクトをそのまま送信するのは良い習慣ですか? または、コンピューター API コントローラーを介してコンピューター データを送信する必要がありますか?

4

1 に答える 1

1

エラーの解決策は、のcomputer_attributes代わりにキーを使用することですcomputer

これは、強く関連付けられた階層データの通常の方法です。ユーザーとは関係なく更新する場合computersは、必ず独自のコントローラーを使用する必要があります。

于 2013-02-13T22:42:38.303 に答える