[英]Git database changes in schema.rb
所以有2個相關的分支機構。 通知和shipping_options 。
我檢查了master
notifications
,然后進行了兩次重要的數據庫更改:
GeneralNotice
模型 Notice
模型,通過添加一個dismissed
的布爾值 然后, shipping_options
也在與notifications
相同的狀態下從主服務器中檢出,並且沒有進行數據庫更改,只有少量代碼更改。
我運行rake db:migrate
第一次從notifications
切換到shipping_options
,反之亦然。
目前,當我在notifications
,並運行rails c
我得到以下內容:
2.0.0-p451 :001 > Notice
=> Notice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime, kind: string, general_notice_id: integer, shop_id: integer, dismissed: boolean)
2.0.0-p451 :002 > GeneralNotice
=> GeneralNotice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime)
2.0.0-p451 :003 >
dismissed
(如預期) 然后我切換到shipping_options
,我希望你一直關注,因為這里有令人困惑的部分......
2.0.0-p451 :001 > Notice
=> Notice(id: integer, title: string, description: text, created_at: datetime, updated_at: datetime, kind: string, general_notice_id: integer, shop_id: integer, dismissed: boolean)
2.0.0-p451 :002 > GeneralNotice
NameError: uninitialized constant GeneralNotice
from (irb):2
from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands/console.rb:47:in `start'
from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands/console.rb:8:in `start'
from /Users/marcoprins/.rvm/gems/ruby-2.0.0-p451/gems/railties-3.2.13/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
2.0.0-p451 :003 >
GeneralNotice
不存在,所以通過根據我的分支更改數據庫顯然git是非常好的和有用的 Notice
仍然有一個布爾dismissed
... Whaaaat ???? git是好還是不好? 救命!!!!!! 每當你切換分支,並且分支可能包含一組不同的遷移時,最好運行rake db:reset
,它從schema.rb
文件重新加載數據庫模式。
為了確保您的schema.rb
在所有分支中都是最新的,每當您將分支與新遷移合並時,最好運行rake db:migrate:reset
。 此rake任務從一開始就運行所有遷移,並將生成的數據庫方案寫入文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.