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仅根据当前分支上的迁移进行更改?
db:migrate或db:rollback作业schema.rb从用户数据库架构写入文件,而不是从用户迁移脚本写入文件。即使你更改了 git 分支,你的数据库状态也不会改变。所以foos表存在但Foo模型不存在。
我的答案:只需在签出分支之前回滚,或者在每次签出分支时编写 git hook 脚本进行回滚
| 归档时间: |
|
| 查看次数: |
1441 次 |
| 最近记录: |