Rails 迁移:移除约束

152

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

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address", :null=>false
end

我想编写一份Rails迁移文件,允许地址字段为空。也就是说,在此次迁移后,表格将如下所示:

create_table "users", :force => true do |t|
   t.string "name", :null=>false
   t.string "address"
end

我需要做什么才能解除约束?

2个回答

307

在Rails 4+中,要移除非空约束,可以使用change_column_null

change_column_null :users, :address, true

你真的尝试过这个吗?如果你看一下该函数的源代码,你只会看到:raise NotImplementedError, "change_column_null is not implemented" - drusepth
4
我曾在PostgreSQL中使用它。Rails在数据库特定的适配器中定义了它。可以参见postgresmysql。在apidock上还可以搜索其他适配器。因此,需要检查数据库适配器是否支持,以防任何人遇到“NotImplementedError”错误。 - deepak
3
点赞!这是Rails指南的链接,可以参考。 - mcKain
1
这应该是所选答案。 - nahtnam

184

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接