2013-06-04 48 views

回答

7

您可以隨時在遷移中運行原始SQL。

MYSQL:

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

的PostgreSQL:

execute "DROP TABLE #{:table_name} CASCADE" 
+0

,對於MySQL的工作,但語法稍有不同PostgreSQL的:執行 「DROP TABLE#{:表名} CASCADE」 – l3x

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 
29

在Rails 4,你可以做到以下幾點:

drop_table :accounts, force: :cascade