协慌网

登录 贡献 社区

如何使用 Rails 迁移删除列

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

Rails 4 已更新,因此可以在迁移中使用更改方法删除列,并且迁移将成功回滚。请阅读有关 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

从数据库表中删除列时,请确保不要使用更改方法(例如,Rails 3 应用程序的迁移文件中不需要的示例):

def change
    remove_column :table_name, :field_name
  end

在谈到 remove_column 时,Rails 3 中的 change 方法并不明智,因此您将无法回滚此迁移。