奇怪的Ruby on Rails错误(AssociationTypeMismatch)

时间:2010-02-26 21:19:30

标签: ruby-on-rails

过去几年一直在使用的现有网络应用的真正问题......

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])

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"
}

任何人都可以提供建议吗?

干杯,

卡尔

1 个答案:

答案 0 :(得分:1)

您的工作模型中似乎有一个声明引起了悲伤:

class Job < ActiveRecord::Base
  has_many :notes
end

当您尝试分配给此类关联时,您将遇到冲突。在分配之前,您需要将文本注释转换为正确的记录。

你可能会做这样的事情:

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

实际参数名称取决于您的Note模型。

您也可以调查accepts_nested_attributes_for,但这可能是一个单独的问题。