通过Rails迁移删除数据库表列的语法是什么?
当前回答
您可以使用rails迁移命令
rails generate migration RemoveColumnNameFromTableName column_name:column_type
然后你可以迁移数据库:
rails db:migrate
其他回答
change方法中的Remove_column将帮助您从表中删除列。
class RemoveColumn < ActiveRecord::Migration
def change
remove_column :table_name, :column_name, :data_type
end
end
点击这个链接获取完整的参考:http://guides.rubyonrails.org/active_record_migrations.html
Rails 4已经更新,因此可以在迁移中使用change方法来删除列,并且迁移将成功回滚。请阅读以下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
Rails 3中的change方法在涉及remove_column时并不聪明,因此您将无法回滚此迁移。
你可以尝试以下方法:
remove_column :table_name, :column_name
(官方文档)
您可以使用rails迁移命令
rails generate migration RemoveColumnNameFromTableName column_name:column_type
然后你可以迁移数据库:
rails db:migrate
Rails 5和6的清晰和简单的说明
警告:您将丢失数据。 警告:下面的指令是针对普通迁移的。对于复杂的迁移,例如数百万行,读/写dbs,集群,这个建议不适合你:
1. 创建迁移
在终端运行如下命令:
rails生成迁移remove_fieldname_from_tablename fieldname:fieldtype(根据约定,表名为复数形式。请在这里查看文档。)
示例:rails g migration RemoveAcceptedFromQuotes accepted:boolean
2. 检查迁移
# db/migrate/20190122035000_remove_accepted_from_quotes.rb
class RemoveAcceptedFromQuotes < ActiveRecord::Migration[5.2]
# with rails 5.2 you don't need to add a separate "up" and "down" method.
def change
remove_column :quotes, :accepted, :boolean
end
end
3.运行迁移
Rake db:migrate or rails db:migrate(它们都是相同的)
....然后你就可以去比赛了!
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 是否可以在MiniTest中运行单个测试?
- 获得PostgreSQL数据库中当前连接数的正确查询
- 如何在Ruby中生成a和b之间的随机数?
- ActiveRecord OR查询
- MySQL数据库表中的最大记录数
- 从现有模式生成表关系图(SQL Server)
- 无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)
- HyperLogLog算法是如何工作的?
- 如何在Ruby中创建文件
- 数据库和模式的区别
- 什么是Ruby文件。开放模式和选项?
- Ruby数组到字符串的转换
- 如何分割(块)一个Ruby数组成X元素的部分?
- Ruby中“or”和||的区别?