Rails迁移使列null => true

Pyk*_*kih 68 migration ruby-on-rails-3

我最初创建了一个带有列的表

t.string   "email",  :default => "", :null => false
Run Code Online (Sandbox Code Playgroud)

要求已更改,现在我需要允许电子邮件为空.如何编写迁移到make:null => true

Pra*_*oya 86

尝试:

change_column :table_name, :email, :string, :null => true
Run Code Online (Sandbox Code Playgroud)

  • 请考虑使用 `change_column_null`,因为这个 `change_column` 在某些版本中可能不起作用 (2认同)

小智 84

我无法使用上述解决方案来使用Active Record 4.0.8和Postgresql 9.3

但是change_column_null 工作得很好.

change_column_null :users, :email, true
Run Code Online (Sandbox Code Playgroud)

当不允许null时,反向有一个很好的选项来更新现有记录(但不设置默认值).

  • 如果你想让'null`成为默认的列值,我建议你使用`change_column_default`.否则它将是'false`或'0`. (7认同)