2013-06-20 170 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