如何在Rails 3.2遷移中強制使用DROP TABLE CASCADE?Rails:創建一個drop table cascade migration
有沒有一個選項可以傳遞給drop_table(「table_name」)?
如何在Rails 3.2遷移中強制使用DROP TABLE CASCADE?Rails:創建一個drop table cascade migration
有沒有一個選項可以傳遞給drop_table(「table_name」)?
您可以隨時在遷移中運行原始SQL。
MYSQL:
execute "DROP TABLE #{:table_name} CASCADE CONSTRAINTS PURGE"
的PostgreSQL:
execute "DROP TABLE #{:table_name} CASCADE"
將一個文件在您的初始化,然後目錄中稱爲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
在Rails 4,你可以做到以下幾點:
drop_table :accounts, force: :cascade
,對於MySQL的工作,但語法稍有不同PostgreSQL的:執行 「DROP TABLE#{:表名} CASCADE」 – l3x