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

时间:2014-07-04 01:41:50

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

我想知道是否可以将默认值传递给rails g migration命令。类似的东西:

 $ rails generate migration add_disabled_to_users disabled:boolean:false #where false is default value for disabled attribute

为了生成:

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end

4 个答案:

答案 0 :(得分:22)

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

add_column :users, :disabled, :boolean, default: false

您还可以看到此链接 - http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

答案 1 :(得分:16)

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

  

null并且无法通过命令行指定默认值。

答案 2 :(得分:3)

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

您希望按照以下步骤实现您想要的目标

1)。执行

$ rails generate migration add_disabled_to_users disabled:boolean

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

class AddDisabledToUsers < ActiveRecord::Migration
  def change
    add_column :users, :disabled, :boolean, default: false
  end
end

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

$ rake db:migrate

答案 3 :(得分:0)

Rails 3.2似乎不支持基于http://guides.rubyonrails.org/v3.2/migrations.html的任何类型的命令行类型修饰符

Rails 4.1的文档引用type modifiers,但Rails 3.2的文档未提及“#34;修饰符”和#34;在页面中。