RailsのDB周りについて、今までに知り得た知識をしっかり整理してまとめておこうかと思います。

マイグレーションとは

マイグレーションという言葉には、「移動」「移住」「移転」などの意味を持ちます。

IT用語として使われており、古いシステムを新しいものに移行させるようなことを指します。

DB関連の用語として使用する場合、マイグレーションファイルを基に、元々あるDBの情報を保持したままDBを変更したり削除したりするようなことを指します。

マイグレーションファイルとは、DBに対して具体的にどういった変更を行うかを定義したファイルを指します。

コマンド一覧

マイグレーションファイルの作成

マイグレーションファイルを作成する場合、Railsのジェネレーターコマンドを利用すれば一緒に必要なファイルも作成されるので間違いないです。

$ bin/rails g migration クラス名

「クラス名」の指定には、キャメルケースかスネークケースのどちらの形式でも対応しています。

マイグレーション実行

マイグレーションファイルに基づいてマイグレーションを実行します。

$ bin/rails db:migrate

マイグレーションの状態確認

マイグレーションの実行した履歴を確認することができます。

$ bin/rails db:migrate:status

マイグレーションがDBに反映されているバージョンには「up」と表記され、反映されていないものには「down」と表記されます。

あと、マイグレーションのバージョン(ID)も確認することができるので、特定のバージョンを指定するコマンドを実行する際にこのコマンドで確認するようにしましょう。

ロールバック実行

マイグレーションのファイル単位でバージョンに対応していて、最新のバージョンから一つ前のバージョンにDBを戻します。

$ bin/rails db:rollback

以下のように、STEPパラメータを指定して幾つ前のバージョンまで戻すかを指定することもできます。

$ bin/rails db:rollback STEP=2

指定したバージョンを有効・無効にする

特定のマイグレーションのバージョンのみDBの適用を有効・無効にすることができる。

# 指定したバージョンを有効
$ bin/rails db:migrate:up VERSION=マイグレーションのバージョン
# 指定したバージョンを無効
$ bin/rails db:migrate:down VERSION=マイグレーションのバージョン

メソッド一覧

マイグレーションで利用することができる命令です。

いざコードを書く時にどういったメソッドがあったかな?と忘れてしまうことが多々あるので随時まとめていきます。

カラム名を変更したい場合

rename_column :テーブル名, :変更前のカラム名, :変更後のカラム名

カラムのデータ型を変更したい場合

change_column :テーブル名, :カラム名,  :データ型

カラムのデフォルト値を変更したい場合

change_column_default :テーブル名, :カラム名, [値]

カラムにNULL制約を付与したい場合

change_column_null :テーブル名, :カラム名, [値]

カラムに外部キーを付与したい場合

add_reference :テーブル名, :カラム名, index: true

カラムを削除したい場合

remove_column :テーブル名, :カラム名

投稿者: TWEI

趣味はプログラミング。 以前は仕事でプログラミングをやっていました。現在はWebエンジニアを目指して勉強中。 勉強で得た知識などをブログで発信していく予定です。

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA