【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
通过Rails迁移删除数据库表列的语法是什么?
#1楼
rails g migration RemoveXColumnFromY column_name:data_type
X =列名
Y =表名
编辑
更改RemoveXColumnToY
到RemoveXColumnFromY
按照注释-提供什么样的迁移实际上做的更清晰。
#2楼
Rails 4已更新,因此可以在迁移中使用更改方法删除列,并且迁移将成功回滚。 请阅读Rails 3应用程序的以下警告:
Rails 3警告
请注意,使用此命令时:
rails generate migration RemoveFieldNameFromTableName field_name:datatype
生成的迁移将如下所示:
def up
remove_column :table_name, :field_name
end
def down
add_column :table_name, :field_name, :datatype
end
从数据库表中删除列时,请确保不使用change方法(Rails 3应用程序中迁移文件中不需要的示例):
def change
remove_column :table_name, :field_name
end
当涉及remove_column时,Rails 3中的更改方法并不聪明,因此您将无法回滚此迁移。
#3楼
给出以下命令,它将自己添加到迁移文件中
rails g migration RemoveColumnFromModel
运行上面的命令后,您可以检查迁移文件remove_column代码必须自己添加
然后迁移数据库
rake db:migrate
#4楼
有两种好方法可以做到这一点:
remove_column
你可以简单地使用remove_column,如下所示:
remove_column :users, :first_name
如果您只需要对模式进行一次更改,那么这很好。
change_table块
您也可以使用change_table块执行此操作,如下所示:
change_table :users do |t|
t.remove :first_name
end
我更喜欢这个,因为我觉得它更清晰,你可以一次做几个改变。
以下是支持的change_table方法的完整列表:
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
#5楼
在rails4应用程序中,也可以使用change方法删除列。 第三个参数是data_type,在可选的第四个参数中你可以给出选项。 它在文档的 “可用转换”部分中有点隐藏。
class RemoveFieldFromTableName < ActiveRecord::Migration
def change
remove_column :table_name, :field_name, :data_type, {}
end
end
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3153411