我最近看了一下我的schema.rb文件,驚慌地發現我的數據庫中確實存在的某些列沒有出現,並且有些表完全丟失。缺少的列通過「def change add_column」遷移添加到數據庫,儘管以這種方式添加的某些列在schema.rb中按預期顯示。爲什麼不更新我的schema.rb文件?
經過仔細檢查,我意識到schema.rb自創建Users表以來並未更新。
20151019205241_create_users.rb:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps null: false
end
end
end
在實踐中,這並沒有引起我的問題,但我認爲schema.rb本來應該自動保持更新,這將是非常重要的是已將其更新以重新創建數據庫。任何人都可以幫我弄清楚爲什麼它不會更新?
一種可能性是,當我將數據庫從sqlite3切換到postgresql時,它停止更新。我不記得確切,但我認爲時機是有道理的。
不知道如何切換數據庫干擾'schema.rb'。當您現在執行'rake db:migrate'時,文件是否得到正確更新? (您無需爲此Rake任務添加任何新遷移即可成功運行。) – Raffael
它沒有。下次我以某種方式更新數據庫時,我會對此進行測試。現在@ smefju下面的解決方案工作。感謝您的回覆!你是對的,它似乎與切換數據庫沒有任何關係。 –