Rails автоматически генерирует миграцию, благодаря генератору командной строки.
Например, если вы хотите удалить таблицу пользователей, напишите оператор командной строки следующим образом:
rails generate migration DropUsersTable
При этом будет создан пустой файл .rb в / db / migrate /, который еще нужно заполнить, чтобы в этом случае удалить таблицу «Пользователи».
Реализация Quick-and-Dirty ™ будет выглядеть следующим образом:
class DropUsersTable < ActiveRecord::Migration
def up
drop_table :users
end
def down
raise ActiveRecord::IrreversibleMigration
end
end
Это «правильно», поскольку показывает, что миграция носит односторонний характер и не может / не может быть отменена. Но чтобы сделать действительно чистую работу в случае, если эти изменения должны были быть отменены, мы должны иметь симметричную миграцию (при условии, что мы можем восстановить потерянные данные), что мы можем сделать, объявив все поля нашей таблицы в файле миграции :
class Dropusers < ActiveRecord::Migration
def change
drop_table :users do |t|
t.string :name, null: false
t.timestamps null: false
end
end
end
Это может быть долго, если модель сложная, но она обеспечивает полную обратимость.
Здесь снова изменения вступят в силу как обычно после выполнения rake db:migrate
.