Railsのマイグレーションの基本についておさらいしたので短いですが投稿してみました。
間違っている点などありましたらご指摘頂けますと幸いです。
マイグレーションの適用
マイグレーションとは、データベーススキーマ(階層構造を持たないOSのディレクトリみたいなもの)の継続的な変更を簡単に行うための仕組みです。
ひとつのマイグレーションファイルがデータベースのひとつのversionと捉えることができ、このデータベースのversionとdb/schema.rbとの構造を一致させる役割を持つのがActive Record
です。
例えば、以下のようなテーブル構造を持つデータベースtasks
があるとします。
create_table "tasks", force: :cascade do |f|
t.string "name"
t.text "description"
end
SQLでテーブルを作成する場合のクエリ
CREATE TABLE tasks(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
description VARCHAR(100),
PRIMARY KEY (id)
):
これに対して以下のようにdb/schema.rbを更新します。
create_table "tasks", force: :cascade do |f|
t.string "name"
t.text "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
schemaにcreated_at
とupdated_at
というカラムが追加され、これを実際のデータベースに適用させたいというとき
DSLを使わずに生のSQLを使用していた場合、ALTER TABLE 構文
などを使用してカラムを追加しなければなりません。
しかし、RubyのDSLであるActive Recordの機能を使用すれば次のコマンドを実行するだけでデータベースのテーブル構造が変更されます。
$ rails db:migrate
これがマイグレーションの適用
です。
まとめ
Active Recordにおけるマイグレーションは、データベース内のカラムやインデックス等に修正を加えるための便利な仕組みであり、データベースのバージョン管理機能でもある??、ということです。
最後までご覧いただきありがとうございました。