通过Rails迁移删除数据库表列的语法是什么?
当前回答
您可以使用rails迁移命令
rails generate migration RemoveColumnNameFromTableName column_name:column_type
然后你可以迁移数据库:
rails db:migrate
其他回答
从表中删除列只需简单的3个步骤如下:
写这个命令
Rails迁移remove_column_from_table_name
在终端上运行此命令后,使用此名称和时间戳创建的文件(remove_column from_table_name)。
然后转到这个文件。
里面的文件你必须写 Remove_column:table_name,:column_name 最后转到控制台,然后执行 rake db: migrate
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控制台中运行即可
ActiveRecord::Base.connection.remove_column("table_name", :column_name, :its_data_type)
or
TableName.find_by_sql(“ALTER TABLE table_name DROP column_name”)
remove_column :table_name, :column_name
例如:
remove_column :users, :hobby
从用户表中删除嗜好列。
推荐文章
- 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 ?
- 数据库性能调优有哪些资源?