我試圖創建schema.rb我所有的表如何在不初始化Rails的情況下從schema.rb創建數據庫?
我用命令:「耙分貝:模式:負荷」
然而,這種失敗,因爲在我的初始化的一個,它被引用模型/表顯然不存在(因爲數據庫是空的)
我可以註釋掉這些行,然後運行模式:再次加載,但是有沒有其他替代方法?
我試圖創建schema.rb我所有的表如何在不初始化Rails的情況下從schema.rb創建數據庫?
我用命令:「耙分貝:模式:負荷」
然而,這種失敗,因爲在我的初始化的一個,它被引用模型/表顯然不存在(因爲數據庫是空的)
我可以註釋掉這些行,然後運行模式:再次加載,但是有沒有其他替代方法?
您可以在初始化程序中添加表格存在檢查。
if TheModel.table_exists?
// do something with the model
end
可能最快的方法是將違規初始化程序移動到應用程序外部的臨時目錄,然後運行模式加載。但是,如果不工作,或者是因爲某些原因的選項,你總是可以解決方法是創建一個光禿禿的骨頭Rails應用做架構負載:
rails new (app)-fixer
gemfile
(除非有特定例外情況)複製到修復程序應用程序。database.yml
配置複製到修復程序應用程序。schema.rb
文件複製到修復程序應用程序。"rake db:drop db:create db:schema:load"
,將建立與從頭開始一個新的數據庫,根據您當前的模式。
應該是公認的答案。像魅力一樣工作 – Aakanksha 2018-02-09 04:41:50
我最終在ActiveAdmin gem的初始化器中使用了這種方法,因爲該gem加載完全不正確。總之,+1。 – MrDerp 2015-01-10 19:26:01