通过Rails迁移删除数据库表列的语法是什么?
当前回答
rails g migration RemoveXColumnFromY column_name:data_type
X =列名 Y =表名
EDIT
根据注释将RemoveXColumnToY更改为RemoveXColumnFromY -为迁移实际做的事情提供了更清晰的说明。
其他回答
首先尝试使用以下命令创建一个迁移文件:
rails g migration RemoveAgeFromUsers age:string
然后在项目的根目录运行迁移命令:
rails db:migrate
步骤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
您可以使用rails迁移命令
rails generate migration RemoveColumnNameFromTableName column_name:column_type
然后你可以迁移数据库:
rails db:migrate
在模型中将列标记为忽略
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
你可以简单地使用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:如何在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 ?
- 数据库性能调优有哪些资源?