2011-03-08 58 views
2

得到使用Rails 3Rails 3的捐赠和错误保存模型到mysql数据库后

class Picture < ActiveRecord::Base 

end 

,当我尝试

Picture.create :content_type => :test 

我得到

TypeError: can't convert nil into Integer 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `uniq' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `commit_transaction_records' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:165:in `transaction' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:207:in `transaction' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:290:in `with_transaction_returning_status' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:240:in `save' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:251:in `rollback_active_record_state!' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/transactions.rb:239:in `save' 
from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.4/lib/active_record/base.rb:498:in `create' 
from (irb):4 

而这一随机误差是我的迁移看起来像

class CreatePictures < ActiveRecord::Migration 
    def self.up 
    create_table :pictures do |t| 
     t.string :title 
     t.string :content_type 
     t.string :url 
     t.float :lat 
     t.float :long 
     t.string :hash 
     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :pictures 
    end 
end 

但数据实际上得到保存?任何想法

回答

-1

是否使用数据库记录创建ID字段?看起来ID字段是唯一的整数,它可能不会在创建时正确返回。

1

您的问题是由于在模型中使用保留字'散列'造成的。尽管我经常难以记住这一点,但一条简单的规则是,在任何Ruby的保留字之后都不要命名列。

如果您正在使用MD5哈希或您的照片,应将列'hash'重命名为'md_hash'。