2013-06-20 213 views
2

這裏是我的模型遷移軌道模型默認值

class CreateSwimmingClassschedules < ActiveRecord::Migration 
    def change 
    create_table :swimming_classschedules do |t| 
     t.integer :slot_id 
     t.integer :coach_id 
     t.integer :level_id , :default => 1 
     t.string :note 

     t.timestamps 
    end 
    end 
end 

我希望以後我打電話

Swimming::Classchedule.create(:coach_id=>8) 

它會生成表默認level_id。但不知何故,它沒有奏效。我在使用SQLite的開發環境中。

我加

:default => 1 

我跑

rake db:migrate 

它的問題之後? 我失蹤的東西?

回答

2

運行遷移後添加該行不會進行更改。

您的語法正確,但您需要使用該添加來運行遷移。考慮制定單獨的遷移文件中像這樣:

class ChangeLevelId < ActiveRecord::Migration 
    def change 
    change_column :swimming_classschedules, :level_id, :integer, :default => 1 
    end 
end 
2

如果添加:default => 1後,你做了一個rake db:migrate,你需要做一個rake db:rollback,做你的數據庫的再遷移。這應該夠了吧。

2

Classchedule還是Classschedule

當我有我的數據庫出了問題,我重新創建:

rake db:drop 
rake db:create 
rake db:migrate