0

我为我的网站编写了一个 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 回答