奇怪的 Ruby on Rails 错误(AssociationTypeMismatch)
-
23-09-2019 - |
题
过去几年一直运行的现有网络应用程序存在真正的问题......
ActiveRecord::AssociationTypeMismatch (Note(#23706868500220) expected, got String(#23706844996600)):
app/controllers/jobs_controller.rb:56:in `new'
app/controllers/jobs_controller.rb:56:in `create'
jobs_controller.rb第56行:
@jobs = Jobs.new(params[:jobs])
来自控制台的参数:
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"
}
有谁可以提供建议吗?
干杯,
卡尔
解决方案
您的工作模型中似乎有一个导致悲伤的声明:
class Job < ActiveRecord::Base
has_many :notes
end
当你尝试分配给这样的协会时,你会遇到冲突。在分配之前,您需要将文本注释转换为正确的记录。
你也许可以做这样的事情:
params[:jobs][:notes] = [ Note.new(:note => params[:jobs][:notes]) ]
实际的参数名称将取决于您的 Note 型号。
您还可以调查 接受嵌套属性 但这可能是一个单独的问题。
不隶属于 StackOverflow