如何在Rails中删除选定的表?我想从数据库中删除具有给定前缀的所有表。在这一点上,PHPMyAdmin将非常有用。
谢谢
发布于 2010-05-06 00:21:52
您可以安装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:migratehttps://stackoverflow.com/questions/2774898
复制相似问题