約束の地

キャロ組

Rails で マイグレーション の履歴をすっ飛ばして スキーマ だけを適用させたい場合

結論

以下の手順をたどります。

1. db/schema.rb を db/migrate 以下に移動する

db/schema.rbdb/migrate 以下に移動させます。

$ mv db/schema.rb db/migrate

2. db/migrate/schema.rb をリネームする

移動した db/schema.rb のファイル名を変更します。ファイル名は一般的なマイグレーションファイルと同様にします。

たとえば 20180714123456_restore_db.rb などとします。

3. リネームをしたファイル名に沿って中身を書き換える

「2.」にて 20180714123456_restore_db.rb と命名したので、同ファイルの中のクラス名を規約に沿うように書き換えます。

一行追加し、一行コメントアウトします。

(省略)
class RestoreDb < ActiveRecord::Migration[5.2] # 追加する行
# ActiveRecord::Schema.define(version: 2018_07_13_091708) do # コメントアウトする行
(省略)

4. rails db:migrate する

あとは $ rails db:migrate すればよいです。

注意

すでにマイグレーションの履歴が存在する場合には適用はできません(できることもある)。

Powered by はてなブログ