【发布时间】:2012-06-09 16:12:56
【问题描述】:
我最初创建了一个列为的表
t.string "email", :default => "", :null => false
要求已更改,现在我需要允许电子邮件为空。如何编写迁移以使 :null => true
【问题讨论】:
我最初创建了一个列为的表
t.string "email", :default => "", :null => false
要求已更改,现在我需要允许电子邮件为空。如何编写迁移以使 :null => true
【问题讨论】:
我无法让上述解决方案与 Active Record 4.0.8 和 Postgresql 9.3 一起使用
但是change_column_null 工作得很好。
change_column_null :users, :email, true
当不允许 null 时,反向有一个不错的选项来更新现有记录(但不设置默认值)。
【讨论】:
null 成为默认列值,我建议您同时使用 change_column_default。否则它将是false 或0。
试试:
change_column :table_name, :email, :string, null: true
【讨论】:
change_column_null,因为此change_column 在某些版本中可能不起作用