#ruby-on-rails #migration
#ruby-on-rails #миграция
Вопрос:
Просто изучаю rails, перехожу к миграции, и все начиналось довольно логично, пока я не наткнулся на что-то странное, происходящее в коде;
rails generate migration AddRegionToSupplier
В приведенном выше примере создается файл миграции, в котором есть только метод «def change».
Я погуглил это и обнаружил, что это именно то, что должно произойти;
http://guides.rubyonrails.org/migrations.html
Я бы ожидал, что он сгенерирует методы «def up» и «def down», чтобы миграцию можно было откатить. Я сделал что-то не так в генерации или я пропустил что-то очевидное?
Комментарии:
1. ты tl; dr’ed XD не волнуйся, со мной тоже много чего происходит, лол
Ответ №1:
Rails 3.1 делает миграции более разумными, предоставляя новый
change
метод. Этот метод предпочтителен для написания конструктивных миграций (добавление столбцов или таблиц). Миграция знает, как перенести вашу базу данных и отменить ее при откате миграции без необходимости записывать отдельный метод down.
Похоже, вам не нужно беспокоиться о наличии def self.down
, поскольку Rails теперь достаточно умен, чтобы знать, как его откатить.
Комментарии:
1. Мне нравится этот ответ. Простой и лаконичный. 🙂 Откуда Rails знает, как отменить миграцию, если у него нет метода down для ее обработки? Сохраняются ли где-нибудь дополнительные данные для отслеживания этих данных?