Rails迁移:消除约束


136

我在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

我需要怎么做才能消除约束?

Answers:



248

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

change_column_null :users, :address, true

您真的尝试过吗?如果您看一下该函数的源代码,您raise NotImplementedError, "change_column_null is not implemented"
只会

3
在postgresql中使用过它。rails在数据库特定的适配器中定义它,请参见postgresmysql。可以在apidock中搜索其他人。因此,如果有人获得了数据库适配器的支持,则必须检查数据库适配器的支持。NotImplementedError
Deepak 2014年

1
赞!这是Rails指南的链接
mcKain

1
这应该是选择的答案
nahtnam
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.