2011-03-08 32 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'。