如何在创建迁移时将默认值设置为rails中的列

时间:2011-12-26 18:12:52

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

我是模拟导轨的新手。我知道如何创建模型&如何向他们添加列。现在我想将默认值设置为一列,但我不知道我究竟能做到这一点。

我生成了新模型

rails g model User

然后添加了列

rails generate migration AddNotificationEmailToUsers notification_email:boolean

现在我想将Notification列的值默认设置为true。 请指导我如何编写相同的迁移。谢谢!!!

4 个答案:

答案 0 :(得分:47)

您无法从命令行执行此操作 - 您必须编辑迁移文件并将相应的行更改为

add_column :users, :notification_email, :boolean, :default => true

答案 1 :(得分:14)

此处的最佳方法是在迁移中使用change_column。它被宣传为更改类型,但您可以使用它将默认值附加到现有列。

我有

location   :integer
在模式中

我希望默认为零,所以我写了一个迁移:

change_column :player_states, :location, :integer, :default => 0

这就是诀窍。

答案 2 :(得分:2)

Frederick Cheung是正确的,您需要为此编辑迁移文件。 只需一个小更新,在指定默认值之前在数据类型后添加逗号。

add_column :users, :notification_email, :boolean, :default => true

答案 3 :(得分:2)

截至目前,无法在rails迁移中指定通过终端定义的默认值。

您可以执行以下步骤以指定列的默认值

1)。执行

$ rails generate migration AddNotificationEmailToUsers notification_email:boolean

2)。通过编辑创建的新迁移文件,将新列的默认值指定为TRUE / FALSE。

class AddNotificationEmailToUsers < ActiveRecord::Migration
  def change
    add_column :users, :notification_email, :boolean, default: true
  end
end

3)。通过执行运行以上生成的迁移。

$ rake db:migrate