通过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

例如:

remove_column :users, :hobby

从用户表中删除嗜好列。

对于较旧版本的Rails

ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype

适用于Rails 3及更高版本

rails generate migration RemoveFieldNameFromTableName field_name:datatype

在模型中将列标记为忽略

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

给出下面的命令,它将自己添加到迁移文件中

rails g migration RemoveColumnFromModel

运行以上命令后,您可以检查迁移文件remove_column代码必须自己添加到那里

然后迁移数据库

rake db:migrate

简单地说,您可以删除列

remove_column :table_name, :column_name

例如,

remove_column :posts, :comment