Rails 迁移:删除约束
Posted
技术标签:
【中文标题】Rails 迁移:删除约束【英文标题】:Rails Migration: Remove constraint 【发布时间】:2011-08-06 15:02:35 【问题描述】:我在 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
我需要做什么来移除约束?
【问题讨论】:
【参考方案1】:在 Rails 4+ 中为了去除非空约束,你可以使用change_column_null
:
change_column_null :users, :address, true
【讨论】:
你真的试过这个吗?如果你看一下函数的源代码,你只会看到:raise NotImplementedError, "change_column_null is not implemented"
在 postgresql 中使用过。 rails 在数据库特定的适配器中定义它,请参阅postgres、mysql。可以在apidock搜索其他人。因此,必须检查数据库适配器以获得支持,以防有人收到NotImplementedError
点赞!这里也是Rails guides 的链接。
这应该是选择的答案【参考方案2】:
不确定是否可以致电t.address
?无论如何...我会像这样使用change_column
change_column :users, :address, :string, :null => true
文档... http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column
【讨论】:
以上是关于Rails 迁移:删除约束的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails:如何使用迁移向现有列添加非空约束?
在 rails upgrade 迁移条目从模式迁移表中删除后