こんにちは。プログラミングスクールで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が潜んでいるのか理解しておくことが大切です。
データベースとモデル苦手克服作戦まだまだ続きます。