通过Rails迁移删除数据库表列的语法是什么?
当前回答
通过 Remove_column:table_name,:column_name 在迁移文件中
你可以在rails控制台中直接删除一个列: ActiveRecord:: Base。Remove_column:table_name,:column_name
其他回答
rails g migration RemoveXColumnFromY column_name:data_type
X =列名 Y =表名
EDIT
根据注释将RemoveXColumnToY更改为RemoveXColumnFromY -为迁移实际做的事情提供了更清晰的说明。
有两种好方法:
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
步骤1:创建迁移
rails g migration remove_column_name_from_table
步骤2:更改刚刚创建的文件迁移中的代码
Rails版本< 3
def change
remove_column :table_name, :column_name, :datatype
end
Rails版本>= 3
def change
remove_column :table_name, :column_name
end
3 .迁移
rake db:migrate
你可以尝试以下方法:
remove_column :table_name, :column_name
(官方文档)
生成一个迁移以删除一个列,这样如果它被迁移(rake db:migrate),它应该删除该列。如果这个迁移被回滚(rake db:rollback),它应该将列添加回。
语法:
Remove_column:table_name,:column_name,:type
删除列,如果迁移回滚,也将列添加回。
例子:
remove_column :users, :last_name, :string
注意:如果跳过data_type,迁移将成功移除列,但如果回滚迁移,它将抛出一个错误。
推荐文章
- 库未加载:libmysqlclient.16。在OS X 10.6上使用mysql2 gem运行'rails server'时出现dylib错误
- 在Ruby中不创建新字符串而修饰字符串的规范方法是什么?
- 数据库触发器是必要的吗?
- RVM不是一个函数,用' RVM use…’不会起作用
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 了解Gemfile。锁文件
- 如何确定一个数组是否包含另一个数组的所有元素
- 什么是数据库池?
- Rails find_or_create_by多个属性?
- Rails ActiveRecord日期之间
- 关于数据库,每个开发人员应该知道些什么?
- 是什么导致这个ActiveRecord::ReadOnlyRecord错误?
- 最好的打印散列的方法