ActiveRecord::AssociationTypeMismatch:预期用户(#49785948),获得Hashie::Mash(#52717320)

ActiveRecord::AssociationTypeMismatch:预期用户(#49785948),获得Hashie::Mash(#52717320),activerecord,nested-attributes,grape,Activerecord,Nested Attributes,Grape,我有一个葡萄api,我想保存嵌套数据 我有一个这样的模型: class Vehicule < ActiveRecord::Base before_validation :set_principal, :if =>:new_record? belongs_to :user accepts_nested_attributes_for :user end 这是我的测试文件 test "PUT /api/v1/vehicules/1" do put("/api/v1/ve

我有一个葡萄api,我想保存嵌套数据

我有一个这样的模型:

class Vehicule < ActiveRecord::Base
  before_validation :set_principal, :if =>:new_record?
  belongs_to :user

  accepts_nested_attributes_for :user
end
这是我的测试文件

test "PUT /api/v1/vehicules/1" do
  put("/api/v1/vehicules/1", { 'confort' => 3.4, 'user' => {'name' => 'name changed'} }, :format => "json")
  assert(200, last_response.status)
  vehicule = Vehicule.find(1)
  assert_equal('name changed', vehicule.user.name, "Le nom de l'utilisateur aurait dû changer")
end
信息是

  1) Error: API::V1::VehiculesTest#test_PUT_/api/v1/vehicules/1: ActiveRecord::AssociationTypeMismatch: User(#49785948) expected, got Hashie::Mas h(#52717320)
    app/controllers/api/v1/vehicules.rb:38:in `block (2 levels) in <class:Vehicu les>'
    test/controllers/api/v1/vehicules_test.rb:18:in `block in <class:VehiculesTe st>'
1)错误:API::V1::VehicleSTest#test#PUT#/API/V1/Vehicles/1:ActiveRecord::AssociationTypeMismatch:预期用户(#49785948)获得Hashie::Mas h(#52717320)
app/controllers/api/v1/vehiclules.rb:38:in‘block(2层)in’
测试/控制器/api/v1/Vehicleus_测试。rb:18:in“阻塞”

我做错了什么?这是我发送数据的方式还是我的结构/声明?

要使用嵌套属性,必须使用“user\u attributes”关键字。因此,必须按如下方式更改参数块:

params-do
可选:confort,类型:Float,desc:“
可选:用户属性,类型:Hash do
可选:名称,类型:字符串
结束
结束
测试文件必须相应地更改

  1) Error: API::V1::VehiculesTest#test_PUT_/api/v1/vehicules/1: ActiveRecord::AssociationTypeMismatch: User(#49785948) expected, got Hashie::Mas h(#52717320)
    app/controllers/api/v1/vehicules.rb:38:in `block (2 levels) in <class:Vehicu les>'
    test/controllers/api/v1/vehicules_test.rb:18:in `block in <class:VehiculesTe st>'