Bizzarro Ruby on Rails errore (AssociationTypeMismatch)
-
23-09-2019 - |
Domanda
problema reale con una webapp esistente che ha lavorato per l'ultimo paio di anni ...
ActiveRecord::AssociationTypeMismatch (Note(#23706868500220) expected, got String(#23706844996600)):
app/controllers/jobs_controller.rb:56:in `new'
app/controllers/jobs_controller.rb:56:in `create'
Linea 56 di jobs_controller.rb:
@jobs = Jobs.new(params[:jobs])
I parametri da 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"
}
Chiunque in grado di consigliare?
Saluti,
Carl
Soluzione
Sembrerebbe che tu abbia una dichiarazione nel modello di lavoro che sta causando il dolore:
class Job < ActiveRecord::Base
has_many :notes
end
Quando si tenta e assegnare ad un'associazione del genere, si otterrà un conflitto. È necessario convertire la nota testuale in un record corretto prima di assegnarlo.
Si può essere in grado di fare qualcosa di simile:
params[:jobs][:notes] = [ Note.new(:note => params[:jobs][:notes]) ]
I nomi dei parametri effettivi dipenderanno dal modello Nota.
Si può anche studiare accepts_nested_attributes_for ma che potrebbe essere una questione a parte.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow