这是我的模型迁移
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
重要吗? 我错过了什么?
答案 0 :(得分:2)
运行迁移后添加该行不会进行更改。
您的语法是正确的,但您需要使用该添加运行迁移。考虑制作一个单独的迁移文件:
class ChangeLevelId < ActiveRecord::Migration
def change
change_column :swimming_classschedules, :level_id, :integer, :default => 1
end
end
答案 1 :(得分:2)
如果您在:default => 1
之后添加了rake db:migrate
,则需要执行rake db:rollback
并对数据库进行重新迁移。这应该可以解决问题。
答案 2 :(得分:1)
是Classchedule
还是Classschedule
?
当我的数据库出现问题时,我会重新创建它:
rake db:drop
rake db:create
rake db:migrate