无论分支如何,都会运行迁移

And*_*eko 1 migration ruby-on-rails schema.rb ruby-on-rails-4.2

我正在不同的分支上工作,这些分支上有迁移文件。有一个schema.rb文件。

我的问题是,无论我当前位于哪个分支,运行迁移都会schema.rb以某种方式改变,就好像它考虑了所有分支上的所有迁移一样。

比如说,我已经在具有相应表的Foo分支上创建了模型,运行迁移并切换到另一个分支。Afoos

bars在我当前的分支上运行一些其他迁移(例如创建表) B,其中没有foos表,创建它:

# while on branch B
Foo
#=> NameError: uninitialized constant Foo
ActiveRecord::Base.connection.table_exists?('foos')
#=> true
Run Code Online (Sandbox Code Playgroud)

问题:如何schema.rb仅根据当前分支上的迁移进行更改?

Jae*_*hin 5

db:migratedb:rollback作业schema.rb从用户数据库架构写入文件,而不是从用户迁移脚本写入文件。即使你更改了 git 分支,你的数据库状态也不会改变。所以foos表存在但Foo模型不存在。

我的答案:只需在签出分支之前回滚,或者在每次签出分支时编写 git hook 脚本进行回滚