如何在Rails中删除选定的表?我想从具有给定前缀的数据库中删除所有表。 PHPMyAdmin在这一点上非常有用。
由于
答案 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