通过Rails迁移删除数据库表列的语法是什么?


当前回答

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时并不聪明,因此您将无法回滚此迁移。

其他回答

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

rails g migration RemoveColumnFromModel

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

然后迁移数据库

rake 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

简单地说,您可以删除列

remove_column :table_name, :column_name

例如,

remove_column :posts, :comment

你可以尝试以下方法:

remove_column :table_name, :column_name

(官方文档)

要从表中删除列,您必须运行以下迁移:

rails g migration remove_column_name_from_table_name column_name:data_type

然后执行命令:

rake db:migrate