Ruby on rails - schema.rb 中的 Git 数据库更改



所以有2个相关的分支。通知shipping_options

我从master中签出了notifications,然后进行了 2 项重要的数据库更改:

  • 创建GeneralNotice模型
  • 通过添加布尔dismissed修改了现有Notice模型

然后shipping_options也以与 notifications 相同的状态从 master 中签出,并且没有进行任何数据库更改,只有少量的代码更改。

我第一次从notifications切换到shipping_options rake db:migrate运行,反之亦然。

目前,当我在 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 ...咦????git 好不好??帮助!!!!!!
  1. 由于已在第一个分支(通知)中运行迁移,因此该列已添加到数据库表中,因此它将显示您是否进行检查。 inspect 方法直接与数据库表一起使用,反映列(属性)。

  2. GeneralNotice:如果您检查数据库,它将包含表 (general_notices),但由于定义 GeneralNote 的文件 general_notice.rb 不在此分支中存在,因此它会抛出未初始化的常量错误。

看看这个和这个,了解一些将数据库置于版本控制之下的想法。

每当切换分支时,分支可能包含一组不同的迁移,明智的做法是运行从schema.rb文件重新加载数据库架构的rake db:reset

为了确保您的schema.rb在所有分支中都是最新的,最好在将分支与新迁移合并时运行rake db:migrate:reset。此 rake 任务从一开始就运行您的所有迁移,并将生成的数据库方案写入文件。

相关内容

  • 没有找到相关文章

最新更新