Rails迁移:删除约束

Jay*_*dse 126 ruby-on-rails database-migration

我在Rails应用程序中有一个表(在schema.rb中)看起来像:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address", :null=>false
end
Run Code Online (Sandbox Code Playgroud)

我想写一个rails迁移来允许地址字段的空值.即迁移后,表格如下所示:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address"
end
Run Code Online (Sandbox Code Playgroud)

删除约束我需要做什么?

dee*_*pak 233

在Rails 4+中,为了删除非空约束,您可以使用change_column_null:

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

  • 有我的upvote.欢迎来到rails 5. (7认同)
  • 在postgresql中使用过它.rails在数据库特定的适配器中定义它参见[postgres](http://apidock.com/rails/ActiveRecord/ConnectionAdapters/PostgreSQLAdapter/SchemaStatements/change_column_null),[mysql](http://apidock.com/rails/ActiveRecord/ ConnectionAdapters/AbstractMysqlAdapter/change_column_null).可以在[apidock]中搜索其他人(http://apidock.com/rails/search?query=change_column_null).因此,必须检查数据库适配器是否支持,以防任何人获得`NotImplementedError` (3认同)
  • 点赞!这里也是 [Rails 指南](http://edgeguides.rubyonrails.org/active_record_migrations.html#changed-columns) 的链接。 (3认同)

Pau*_*ess 163

不确定你可以打电话t.address吗?反正......我会用change_column像这样

change_column :users, :address, :string, :null => true
Run Code Online (Sandbox Code Playgroud)

文档... http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column