2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マイグレーションとは [Rails]

Last updated at Posted at 2025-12-05

こんにちは。プログラミングスクールでruby on railsを学習中のくろちゃんです。
今回もデータベースやモデルへの苦手意識克服キャンペーンをしていきます。

一歩ずつ確実に前に進んで行くんだ。
この気持ちを忘れずに今回はマイグレーションについてまとめてみます。

マイグレーションとは

Railsガイドより

マイグレーション(migration)はActive Recordの機能の1つであり、データベーススキーマが長期にわたって進化を安定して繰り返せるようにするための仕組みです。マイグレーション機能のおかげで、スキーマ変更を生SQLで記述せずに、Rubyで作成されたマイグレーション用のDSL(ドメイン固有言語)を用いてテーブルの変更を簡単に記述できます。

正直全く何を言っているのか分かりません。
今日はこれを紐解いていきます。

まず、ActiveRecordとはモデルとSQLとのやり取りを簡単にしてくれるものでした。

その機能の1つであり、データベースの構造や設計図を安全に少しずつ(小分けにして)変更していける仕組み。
SQLを直接書かなくてもrubyなどの文法で「テーブルを作る」「カラムを追加・削除できる」といった操作ができる。

railsガイドの小難しい文字列を言い換えるとこんなところだと思います。

マイグレーションの方法

1.モデルとマイグレーションを同時に作成

userモデルを作る場合

rails g(generate) model User name:string email:string

このコマンドでモデルapp/models/user.rbとマイグレーションファイルdb/migrate/xxxx_create_users.rbを作成します。

既存のモデルにカラムだけを追加したい場合はマイグレーションだけを生成します。

rails g(generate) migration AddAgeToUsers age:integer

2.マイグレーションを実行してデータベースに反映させる

rails db:migrate

このコマンドで実際データベースにテーブルが作成されます。

ロールバック

マイグレーションとはで、少しずつ(小分けにして)変更していける仕組み。と書きました。
その最大のメリットはロールバックできることだと思います。

ロールバックとは前のマイグレーションで行った変更を元に戻すことです。

直前に戻したい時は

rails db:rollback

もっと前に戻したい時は

rails db:rollback STEP=

とすることで、DBを元に戻すことができます。

小分けしている分少しずつ戻すことが出来るので影響範囲を抑えることが出来ます。

まとめ

便利ですね。
簡単な操作ならマイグレーションで賄えます。
ただ、複雑な操作は直接SQLを触る必要があるし、マイグレーションしたものも、中身はどんなSQLが潜んでいるのか理解しておくことが大切です。

データベースとモデル苦手克服作戦まだまだ続きます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?