Метод up
должен сопровождаться методом down
, который может использоваться для отмены изменений миграции. Например, если вы написали пример в вашем вопросе, используя вверх и вниз, вам потребуется следующий код:
class CreateTweets < ActiveRecord::Migration
def up
create_table :tweets do |t|
t.string :status
t.integer :zombie_id
t.timestamps
end
end
def down
drop_table :tweets
end
end
change
метод, с другой стороны, может быть отменено автоматически Rails, так что нет необходимости вручную создайте метод down
.
change
было ввести, чтобы заменить up
и down
, потому что большинство down
методы легко могут быть предсказаны на основе метода up
(в приведенном выше примере drop_table
явно противоположен create_table
).
В ситуациях, когда обратная операция не может быть получена автоматически, вы можете использовать либо up
и down
методы, или вызвать метод reversible
из метода change
.
Для получения дополнительной информации см. sections 3.6 - 3.7 of the Rails migration guide.