ArgumentError(Fixnum与nil的比较失败)

时间:2013-08-22 06:41:41

标签: ruby-on-rails ruby ruby-on-rails-3.2

我正在使用rails 3.2和ruby 1.9.2。当我尝试使用一些指定的哈希值创建记录时,它会抛出ArgumentError (comparison of Fixnum with nil failed)异常。 我的源代码是

doc = ArtifactImage.create!(vars)

Image的值和架构如下所示。

vars : {:parent=>#<ArtifactContainer id: 23, artifact_container_type_id: 2, party_id: 11, parent_id: 21, folder_id: nil, filing_center_group_id: nil, artifact_source_type_id: nil, display_date: nil, record_date: nil, display_name: "Pictures", path: "/bathakarai/Pictures", file: nil, description: nil, type: "ArtifactContainer", recycled: false, discarded_date: nil, signed: false, phr: true, record_status_id: 1, created_at: "2013-07-19 04:29:39", updated_at: "2013-07-19 04:29:39", lock_version: 2, lft: nil, rgt: nil>, :file=>"clip-art-tom-and-jerry-381931.jpg", :display_name=>"Pictures", :artifact_source_type_id=>3, :party_id=>11, :folder_id=>nil}
  

ArtifactImage:ArtifactImage(id:integer,artifact_container_type_id:   整数,party_id:整数,parent_id:整数,folder_id:整数,   filing_center_group_id:integer,artifact_source_type_id:integer,   display_date:datetime,record_date:date,display_name:string,path:   string,file:string,description:string,type:string,recycled:   boolean,abandoned_date:datetime,signed:boolean,phr:boolean,   record_status_id:integer,created_at:datetime,updated_at:datetime,   lock_version:integer,lft:integer,rgt:integer)

相同的代码在rails-2中运行良好。请指导我如何解决这个问题

2 个答案:

答案 0 :(得分:1)

如果您使用acts_as_tree,则可以执行此操作。

  

来自acts_as_tree或您只拥有的其他系统   PARENT_ID?没问题。只需添加lft&amp; rgt字段如上,和   然后运行:

Category.rebuild!
     

您的树将转换为有效的嵌套集。真棒:

在您的情况下,您可以尝试:

ArtifactImage.rebuild!

更多详情documentation of acts_as_tree

答案 1 :(得分:0)

如果您在评论中说ArtifactImage表需要所有值,则需要确保所有值都已填充,这是没有发生的,因为您有nil值。而不是拥有那些id值,你不能在对象之间建立关系吗?我会更有意义。