Rails:创建一个drop table级联迁移

时间:2013-06-04 22:38:45

标签: ruby-on-rails postgresql

如何在Rails 3.2迁移中强制使用DROP TABLE CASCADE?

是否可以选择传递给drop_table(“table_name”)?

3 个答案:

答案 0 :(得分:38)

在Rails 4中,您可以执行以下操作:

drop_table :accounts, force: :cascade

答案 1 :(得分:8)

您始终可以在迁移中运行原始SQL。

MYSQL:

execute "DROP TABLE #{:table_name} CASCADE CONSTRAINTS PURGE"

的PostgreSQL:

execute "DROP TABLE #{:table_name} CASCADE"

答案 2 :(得分:2)

将一个文件放在名为postgres.rb的初始化程序目录中,然后执行。无论如何,这适用于rails 4.1。

module ActiveRecord
    module ConnectionAdapters # :nodoc:
        module SchemaStatements
            def drop_table(table_name, options = {})
                execute "DROP TABLE  #{quote_table_name(table_name)} CASCADE"
            end
        end
    end
end