Rails откат change_column миграции - PullRequest
0 голосов
/ 22 мая 2018

Я только что перенес свою миграцию create_supplier, затем я понял, что один из моих типов данных был неправильным, поэтому я добавил другую миграцию, которая выглядит следующим образом: -

class ChangePhoneToStringInSuppliers < ActiveRecord::Migration[5.1]
  def change
    change_column :suppliers, :phone_no_1, :string
    change_column :suppliers, :phone_no_2, :string
  end
end

После миграции я понял, что яЯ не сдвинул свой код, поэтому в идеале я должен откатиться до миграции create_suppliers и добавить туда изменения самостоятельно.Когда я выполняю откат ChangePhoneToStringInSuppliers, я получаю следующую ошибку: -

This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.

Я думаю, что метод, предложенный в приведенном выше сообщении об ошибке (и других сообщениях в Интернете), является предупреждением этой проблемы, скорее вылечит (исправьте меня, если яя не прав)Как я могу откатить эту миграцию сейчас?

1 Ответ

0 голосов
/ 22 мая 2018

вам нужно обновить код файла миграции.удалите метод def change и вместо этого добавьте оба метода вверх и вниз, поскольку миграция change_column не поддерживает откат.

Я не знаю, какой тип данных столбца вы использовали ранее, поэтому, пожалуйста, измените его в соответствии с вашими потребностями

class ChangePhoneToStringInSuppliers < ActiveRecord::Migration[5.1]
    def up
      change_column :suppliers, :phone_no_1, :string
      change_column :suppliers, :phone_no_2, :string
    end

    def down
      change_column :suppliers, :phone_no_1, :text
      change_column :suppliers, :phone_no_2, :text
    end
end

В методе up запишите, что вы хотите сделать, например, измените тип данных столбца на текст,

В методе down запишите, если вы откатили миграцию, что она должна делать, например, в данный момент тип данных вашего столбца - строкаи вы хотите вернуть его в строку при откате, чем написать соответствующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...