通过Rails迁移删除数据库表列的语法是什么?
当前回答
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 g migration RemoveColumnNameFromTables column_name:类型
即rails g migration RemoveTitleFromPosts title:字符串
无论如何,最好考虑停机时间以及因为ActiveRecord在运行时缓存数据库列,所以如果你删除一列,它可能会导致异常,直到你的应用程序重新启动。
参考:强迁移
有两种好方法:
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
rails g migration RemoveXColumnFromY column_name:data_type
X =列名 Y =表名
EDIT
根据注释将RemoveXColumnToY更改为RemoveXColumnFromY -为迁移实际做的事情提供了更清晰的说明。
remove_column :table_name, :column_name
例如:
remove_column :users, :hobby
从用户表中删除嗜好列。
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(它们都是相同的)
....然后你就可以去比赛了!
推荐文章
- Rails:如何在Rails 4中引用CSS中的图像
- 如何使用RSpec的should_raise与任何类型的异常?
- 我看到VARCHAR(255)如此频繁地使用(而不是其他长度),有什么好的原因吗?
- 如何创建退出消息
- 忽略GEM,因为没有构建它的扩展
- Rails -嵌套包括活动记录?
- 在Gem::Specification.reset期间未解决的规格:
- 使用pgadmin连接到heroku数据库
- Delete_all vs destroy_all
- 双引号vs单引号
- 用any可以吗?'来检查数组是否为空?
- 我如何移动一个redis数据库从一个服务器到另一个?
- Rails获取“each”循环的索引
- 如何首次配置postgresql ?
- 数据库性能调优有哪些资源?