通过Rails迁移删除数据库表列的语法是什么?
当前回答
删除RAILS 5应用程序的列
rails g migration Remove<Anything>From<TableName> [columnName:type]
上面的命令在db/migrate目录中生成一个迁移文件。Snippet blow是Rails生成器生成的从表中删除列的示例之一,
class RemoveAgeFromUsers < ActiveRecord::Migration
def up
remove_column :users, :age
end
def down
add_column :users, :age, :integer
end
end
我还做了一个Rails的快速参考指南,可以在这里找到。
其他回答
你可以尝试以下方法:
remove_column :table_name, :column_name
(官方文档)
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时并不聪明,因此您将无法回滚此迁移。
在模型中将列标记为忽略
class MyModel < ApplicationRecord
self.ignored_columns = ["my_field"]
end
生成迁移
$ bin/rails g migration DropMyFieldFromMyModel
编辑迁移
class DropMyFieldFromMyModel < ActiveRecord::Migration[6.1]
def change
safety_assured { remove_column :my_table, :my_field }
end
end
运行迁移
$ bin/rails db:migrate
remove_column :table_name, :column_name
例如:
remove_column :users, :hobby
从用户表中删除嗜好列。
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
推荐文章
- 如何在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”和||的区别?