Вам, вероятно, не нужно откатываться к предыдущему коммиту. Просто обновите файл миграции, чтобы использовать директивы table_exists?
и / или column_exists?
.
Если вы создаете совершенно новую таблицу, она будет использоваться следующим образом:
class CreateSomeCoolThings < ActiveRecord::Migration
def up
unless table_exists?(:some_cool_things)
create_table :some_cool_things do |t|
...
end
end
end
def down
if table_exists?(:some_cool_things)
drop_table :some_cool_things
end
end
end
И если вы просто добавляете новые столбцы в существующую таблицу, вы можете сделать это:
class AddSomeAttributeToWhatevers < ActiveRecord::Migration
def up
add_column :whatevers, :some_attribute, :string unless column_exists? :whatevers, :some_attribute
end
def down
remove_column :whatevers, :some_attribute if column_exists? :whatevers, :some_attribute
end
end
Безопасная защита ваших миграций таким способом - это просто хорошая практика, чтобы привыкнуть в любом случае.