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

有关系吗?我错过了什么?

4

3 回答 3

2

在运行迁移后添加该行不会进行更改。

您的语法是正确的,但您需要使用该添加运行迁移。考虑制作一个单独的迁移文件,如下所示:

class ChangeLevelId < ActiveRecord::Migration
  def change
    change_column :swimming_classschedules, :level_id, :integer, :default => 1
  end
end
于 2013-06-20T05:09:33.377 回答
2

如果在执行 a:default => 1之后添加rake db:migrate,则需要执行 arake db:rollback并重新迁移数据库。这应该够了吧。

于 2013-06-20T05:10:40.210 回答
1

Classchedule还是Classschedule

当我的数据库出现问题时,我会重新创建它:

rake db:drop
rake db:create
rake db:migrate
于 2013-06-20T05:15:26.923 回答