我可以将默认值传递给rails生成迁移吗?

Lea*_*xxx 30 ruby-on-rails rails-migrations ruby-on-rails-3

我想知道是否可以将默认值传递给rails g migration命令.就像是:

 $ rails generate migration add_disabled_to_users disabled:boolean:false #where false is default value for disabled attribute
Run Code Online (Sandbox Code Playgroud)

为了生成:

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end
Run Code Online (Sandbox Code Playgroud)

Dee*_*ade 24

Rails迁移生成器不处理默认值,但在生成迁移文件后,您应该使用以下代码更新迁移文件

add_column :users, :disabled, :boolean, default: false
Run Code Online (Sandbox Code Playgroud)

你也可以看到这个链接 - http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

  • 我知道我可以在之后修改迁移。我想在终端上将默认值作为参数传递。上下文:在我正在做的自定义生成器中:`generate "migration add_demo_to_#{table_name} demo:boolean"` (2认同)

Ben*_*enj 18

你不能:https://guides.rubyonrails.org/active_record_migrations.html#column-modifiers

null和default不能通过命令行指定.


Sub*_*dra 7

Rails 中的默认迁移生成器不处理默认值,目前还没有办法在 rails 迁移中指定通过终端定义的默认值。

你想按照以下步骤来实现你想要的

1)。执行

$ rails generate migration add_disabled_to_users disabled:boolean
Run Code Online (Sandbox Code Playgroud)

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

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end
Run Code Online (Sandbox Code Playgroud)

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

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

  • 正如我对 Deepti Kakade 所说的,我知道我可以在之后修改迁移。这不是我问的。 (2认同)