在Rails中删除mysql表

时间:2010-05-05 16:06:02

标签: mysql ruby-on-rails

如何在Rails中删除选定的表?我想从具有给定前缀的数据库中删除所有表。 PHPMyAdmin在这一点上非常有用。

由于

1 个答案:

答案 0 :(得分:1)

您可以安装phpMyAdmin并手动删除您的表,或者如果您想在rails框架内执行此操作并使迁移保持同步,为什么不创建一个新的迁移来删除self.up上的表并创建表在self.down。

class DropOldTablesMigration < ActiveRecord::Migration
  def self.up
    drop_table :prefix_table1
    drop_table :prefix_table2
  end

  def self.down
    create_table :prefix_table1 do |t|
      t.column :name, :string
    end
    create_table :prefix_table2 do |t|
      t.column :name, :string
    end
  end
end

编辑: 只是为了跟进,如果问题是有很多表并且你不想全部输入它们,你可以这样做:

class DropOldTablesMigration < ActiveRecord::Migration
  def self.up
    ActiveRecord::Base.connection.tables.each do |t|
      unless t.index('yourprefix_') == nil
        drop_table t
      end
    end
  end
end

当你向下迁移时,你无法重新创建表格,但根据你的应用程序发生的情况,这可能不是一个问题。


编辑回应您的评论:

要创建新的迁移,请从应用的根目录运行以下命令:

script/generate migration YourMigrationName

将在db / migrate中为您创建迁移文件。添加要运行的代码并保存。要运行新文件,请在命令行中输入以下内容

rake db:migrate