2014-04-02 50 views
0

因此有2個相關分支。 通知shipping_optionsschema.rb中的Git數據庫更改

我檢查notificationsmaster,然後製成2點顯著數據庫的變化:通過增加一個布爾dismissed

然後shipping_options

  • 創建GeneralNotice模型
  • 改性現有Notice模型,也以與相同的狀態被檢出0,並且沒有進行數據庫更改,只有很小的代碼更改。

    我跑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
  1. 既然你已經運行在第一個分支(通知)遷移時,列被添加到數據庫表中,因此,如果你檢查它就會顯示出來。 inspect方法直接與數據庫表一起使用,反映列(屬性)。

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

看一看thisthis的一些想法把你的數據庫版本控制之下。

+0

我在哪裏可以看到桌子,只是爲了確定。 'GeneralNotice.inspect'引發相同的未初始化的常量錯誤 –

+0

登錄到數據庫控制檯。如果mysql:mysql -u -p 並且顯示錶; –

1

無論何時您切換分支,並且分支可能包含一組不同的遷移,運行rake db:reset是明智的,它會從schema.rb文件重新加載數據庫模式。

爲了確保您的schema.rb在所有分支都是最新的,無論何時將分支合併到新遷移中,運行rake db:migrate:reset都是個好主意。該rake任務從一開始就運行所有遷移,並將生成的數據庫方案寫入文件。