最近ruby on railsの学習を始めたのですがHTMLとPHPの勉強してきた人間なので、
はじめはマイグレーションという言葉の概念すらわからない状態でした。
なんとなくマイグレーションについてわかってきたので同じような初学者に向けて
学んだことをまとめていきたいと思います。
目次
マイグレーションとは
マイグレーションを使うメリット
マイグレーションファイルを作成する
マイグレートの実行
マイグレーションの修正
絶対これはしちゃダメなこと
マイグレーションとは
そもそもマイグレーションファイルとは何か。
マイグレーションはデータベースの構造を書き記した設計書のようなものです。
データベースは以下DBとさせていただきます。
マイグレーションファイルのスゴイ所は、
SQL文を書かなくてもDBの変更(テーブルの作成や変更)ができるというところです。
マイグレーションを使うメリット
DBの変更についてのログが残る
ファイルを作ってDBに変更を加えていくため、ログがファイルとして蓄積されていきます。
同じファイルを持っている人間(例えばチームなど)がDBに同じテーブルを作成したいとき、それが容易になる
先程述べたように、マイグレーションファイルとはDBの構造の設計書のようなものです。
そのため、同じ設計書を持っていれば全く同じ構造のDBを作ることができます。
マイグレーションファイルを作成する
マイグレーションファイルを作成したいときには以下のコマンドで作成することができます。
rails g migration ファイル名 カラム名:データ型
カラム名とデータ型についてはファイルを作った後にファイル内で編集することもできるため、なくても大丈夫です。データ型などのファイル内での記述については今後の記事で書いていきたいと思っているため本記事では割愛させていただきます。
このコマンドを実行するとマイグレーションファイルとテストファイルが作成されます。
マイグレーションファイルはdb/migrate/作成した日付_ファイル名.rbに作成されます。
また、rails gにはmigration以外にも種類があります。
migration以外のコマンドで作成できるものについては 以下のサイトが参考になります。
マイグレートの実行
マイグレーションに記述した内容をDBに適用することをマイグレートと呼びます。
マイグレート時のコマンドは以下になります。
rails db:migrate
このコマンドを実行するとdb/migrate/に含まれているファイルが古い順に読み込み・実行されます。
マイグレーションの修正方法
「あ、カラム名ミスった、、、」っていうことが発生した時はどうしましょう(優秀な方ならなさそうですが…)。
まずは、ファイルの状態を確認します。
rails db:migrate:status
upはmigrateで反映済み、downは反映がされていない状態です。
新たにファイルを作成する
修正のためのファイルを作成し、その中に修正内容を記載します。
例えば、作ったカラムの名前を間違えていた時はそのカラムを削除し、
新たに正しい名前のカラムを追加するといったような修正方法です。
マイグレーションの変更をもとに戻す
rails db:rollback
で1つ前に戻すことができます。
そして変更をしたいファイルをdownの状態にした上で変更し、
再びrails db:migrate
をします。
絶対これはしちゃダメなこと
やってはいけないこと。それは、、、
マイグレートファイルの内容を書きかえることです。
なぜかというと、書きかえると環境ごとで辻褄が合わず、
統合がとれない、エラーが発生するなどの問題が生じる可能性があります。
また、メリットとしてログが残ることを挙げましたが、書きかえてしまうと書きかえたというログは残らないため完全なログが残せなくなります。
参考