rails模型默认值

时间:2013-06-20 04:27:44

标签: ruby-on-rails ruby ruby-on-rails-3

这是我的模型迁移

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

重要吗? 我错过了什么?

3 个答案:

答案 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