21

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

是否有传递给 drop_table("table_name") 的选项?

4

3 回答 3

54

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

drop_table :accounts, force: :cascade
于 2015-01-24T01:57:58.030 回答
10

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

MYSQL:

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

PostgreSQL:

execute "DROP TABLE #{:table_name} CASCADE"

drop_table 您可以在此处查看内置方法的文档。

于 2013-06-04T22:54:06.823 回答
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
于 2014-06-10T21:35:29.140 回答