【发布时间】:2013-06-04 22:38:45
【问题描述】:
如何在 Rails 3.2 迁移中强制使用 DROP TABLE CASCADE?
是否有传递给 drop_table("table_name") 的选项?
【问题讨论】:
如何在 Rails 3.2 迁移中强制使用 DROP TABLE CASCADE?
是否有传递给 drop_table("table_name") 的选项?
【问题讨论】:
在 Rails 4 中,您可以执行以下操作:
drop_table :accounts, force: :cascade
【讨论】:
您始终可以在迁移中运行原始 SQL。
MYSQL:
execute "DROP TABLE #{:table_name} CASCADE CONSTRAINTS PURGE"
PostgreSQL:
execute "DROP TABLE #{:table_name} CASCADE"
你可以查看内置方法drop_tablehere的文档。
【讨论】:
在您的初始化程序目录中放置一个名为 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
【讨论】: