簡體   English   中英

schema.rb中的Git數據庫更改

[英]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 (如預期)
  • GeneralNotice存在(如預期的那樣)

然后我切換到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是好還是不好? 救命!!!!!!
  1. 由於您已在第一個分支(通知)中運行遷移,因此該列已添加到數據庫表中,因此它將顯示您是否進行檢查。 inspect方法直接使用數據庫表,反映列(屬性)。

  2. GeneralNotice:如果檢查數據庫,它將包含表(general_notices),但由於定義了GeneralNotice的文件general_notice.rb在此分支中不存在,因此會拋出未初始化的常量錯誤。

看看這個以及這個有關將數據庫置於版本控制之下的一些想法。

每當你切換分支,並且分支可能包含一組不同的遷移時,最好運行rake db:reset ,它從schema.rb文件重新加載數據庫模式。

為了確保您的schema.rb在所有分支中都是最新的,每當您將分支與新遷移合並時,最好運行rake db:migrate:reset 此rake任務從一開始就運行所有遷移,並將生成的數據庫方案寫入文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM