2014-06-18 18 views
1

我應該把"PRAGMA FOREIGNS KEYS = ON;"放在rails 4.0中?Rails:在哪裏把PRAGMA FOREIGNS KEYS = ON for SQLite

我知道它的連接設置,所以我必須讓rails在任何時候刪除它,但我不知道該把它放在哪裏。我嘗試在選項中的database.yml,它不工作。不能谷歌在哪裏把它。我希望它能夠級聯刪除工作。

回答

0

的語法是這樣的:

drop table if exists db_name.table_name 

中是否存在地方和DB_NAME。零件是可選的。這裏沒有CASCADE,因此SQLite在使用DROP TABLE時根本不支持CASCADE,並且沒有什麼可以添加它(除非你想破解SQLite C源代碼並自己添加它)。使用SQLite時你必須接受一些限制,這是其中之一。

如果你想爲SQLite和MySQL使用一種遷移,那麼你必須檢查哪個數據庫正在被使用,並執行適當的SQL或找到可在任何地方工作(即手動執行CASCADE)的東西。檢查您正在使用的數據庫的簡單方法是:

case connection 
    when ActiveRecord::ConnectionAdapters::PostgreSQLAdapter 
     # PostgreSQL things go here 
    when ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter 
     # MySQL things go here 
    when ActiveRecord::ConnectionAdapters::SQLiteAdapter 
     # SQLite things go here 

... 
end