Je vais avoir une API de Raisin et je veux sauvegarder les données imbriquées.ActiveRecord :: AssociationTypeMismatch: Utilisateur (# 49785948) attendu, a obtenu Hashie :: Mash (# 52717320)
J'ai un modèle comme celui-ci:
class Vehicule < ActiveRecord::Base
before_validation :set_principal, :if =>:new_record?
belongs_to :user
accepts_nested_attributes_for :user
end
Le api de raisin:
# app/controller/api/v1/vehicules.rb
resource :vehicules do
desc "Update a vehicule."
params do
optional :confort, type: Float, desc: ""
optional :user, type: Hash do
optional :name, type: String
end
end
put ':id' do
#authenticate! @todo
Vehicule.find(params[:id]).update(vehicule_params)
end
Et voici mon fichier de test
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
Le message est
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>'
Qu'est-ce que je fais de mal? Est-ce la façon dont j'envoie les données ou est-ce ma structure/déclaration?