如何通过'rails g migration'命令向要添加的列添加默认值

Raj*_*tan 10 ruby-on-rails database-migration rails-activerecord

我知道如何在已创建的迁移文件中添加默认值.即

`rails generate migration AddTestColumnToTesttable test_status:boolean` to create it.
Run Code Online (Sandbox Code Playgroud)

它将生成此迁移:

class AddTestColumnToTable < ActiveRecord::Migration
  def change
    add_column :table, :test_status, :boolean, :default => true
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,我们可以通过rails g migration命令本身添加默认值吗?

Raj*_*ngh 15

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

add_column :table, :test_status, :boolean, :default => true
Run Code Online (Sandbox Code Playgroud)

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


Pra*_*rge 5

**Rails 4.X +**

现在,由于没有选项可以将新列添加到具有通过rails迁移中的终端定义的默认值的表中,所以要 使用以下步骤将新列添加到具有默认值true或false的现有表.

1.从命令行运行迁移以添加新列

$ rails generate migration add_columnname_to_tablename columnname:boolean
Run Code Online (Sandbox Code Playgroud)

上面的命令将在表中添加一个新列.

2.通过编辑创建的新迁移文件,将新列值设置为TRUE/FALSE.

class AddColumnnameToTablename < ActiveRecord::Migration
  def change
    add_column :tablename, :columnname, :boolean, default: false
  end
end
Run Code Online (Sandbox Code Playgroud)

**3.要对应用程序数据库表进行更改,请在终端**中运行以下命令

$ rake db:migrate
Run Code Online (Sandbox Code Playgroud)