2010-02-26 3 views
1

problème réel avec une webapp existante qui travaille depuis les deux dernières années ...Bizarre Ruby on Rails (AssociationTypeMismatch)

ActiveRecord::AssociationTypeMismatch (Note(#23706868500220) expected, got String(#23706844996600)): 
    app/controllers/jobs_controller.rb:56:in `new' 
    app/controllers/jobs_controller.rb:56:in `create' 

Ligne 56 de jobs_controller.rb:

@jobs = Jobs.new(params[:jobs]) 

Paramètres de la console:

Parameters: { 
    "label" => { "userid" => "332" }, 
    "jobs" => { 
    "sub"  => "7", 
    "notes" => "Test Note Information", 
    "master" => "1", 
    "user_id" => "332", 
    "file" => "Screen shot 2010-02-19 at 13.33.19.png", 
    "ref"  => "12345", 
    "jobtitle"=> "Test Job", 
    "status" => "0" 
    }, 
    "x"  => "111", 
    "y"  => "6", 
    "id" => "newjob" 
} 

Toute personne en mesure de conseiller?

Cheers,

Carl

+0

Besoin de plus d'informations sur le modèle Job, pouvez-vous poster un code? – meagar

Répondre

1

Il semblerait que vous avez une déclaration dans votre modèle d'emploi qui provoque la douleur:

class Job < ActiveRecord::Base 
    has_many :notes 
end 

Lorsque vous essayez d'attribuer à une association comme ça, vous aurez un conflit. Vous devez convertir la note textuelle en un enregistrement approprié avant de l'attribuer.

Vous pourrez peut-être faire quelque chose comme ceci:

params[:jobs][:notes] = [ Note.new(:note => params[:jobs][:notes]) ] 

Les noms de paramètres réels dépendent de votre modèle de note.

Vous pouvez également rechercher accepts_nested_attributes_for mais cela pourrait être une question distincte.

+1

c'était tout - merci! –