Я работаю над разными ветками, и на этих ветках есть файлы миграции. Файл schema.rb
.Миграция выполняется независимо от ветки
Моя проблема в том, что независимо от того, в какой ветке я нахожусь, текущая миграция изменяет schema.rb
так, как если бы она учитывала все миграции по всем ветвям.
Скажите, я создал модель Foo
на ветке A
с соответствующей таблицей foos
, запустил миграцию и переключился на другую ветку.
Запуск какой-либо другая миграции (скажем, создание таблицы bars
) на моей текущей ветви B
, где нет foos
стола, создает его:
# while on branch B
Foo
#=> NameError: uninitialized constant Foo
ActiveRecord::Base.connection.table_exists?('foos')
#=> true
Вопрос: Как сделать schema.rb
изменить только в соответствии с миграции в текущем филиале?
Я думаю, что откат является допустимым вариантом здесь, но я хотел бы установить что-то более надежное, так что мне не нужно откатываться каждый раз, когда я переключаю ветку. Можете ли вы что-нибудь придумать? –
@AndreyDeineko как насчет написания скрипта git hook, который сравнивает версию миграции между master и текущей ветвью и откатом. он выполняется при оформлении нового филиала –