LoginSignup
5
4

More than 5 years have passed since last update.

これだけは知っておきたいRuby on Rails の generate migration

Posted at

はじめに

Railsチュートリアルをやってる中であまり理解ができなかった
マイグレーションについて簡単に備忘がてらまとめます。

マイグレーションとは

①移住。移転。移動。
②現在使用しているシステムやソフトウエアから別のものに移行すること。
参考:Weblio:マイグレーション

Railsのマイグレーションで出来ること

一口で言うと、SQLを意識しなくてもテーブルの作成や変更を行うことができる機能。

例えばMySQLなどのRDMSでテーブルを作成するときには
create table test_table ( id int,user string)

だったり、カラムを変更したいときは
alter table test_table change user user_name

などと、毎回SQL文を発行しなければいけませんが、
マイグレーション機能を使えばSQL文を書くことなくテーブルの操作が行えます。

テーブルを作成する

手順としては以下の2ステップのみ。

手順
①マイグレーションスクリプトファイルの作成
②スクリプトファイルの実行

まず①のマイグレーションスクリプトファイルを作成します。
rails generate migration テーブル名 フィールド名1:型名1,フィールド名2:型名2 ... フィールド名N:型名N

まだこの段階ではデータベースは作成されていないので、
①で作成されたスクリプトファイルを実行してデータベースを作成します。

マイグレーションスクリプトファイルの実行は以下の1文で行えます。
rails db:migrate

因みに誤ってマイグレーションしてしまった場合には
rails db:rollback
でロールバック(=取り消し)が可能です。

サンプル

テーブル名:user

カラム名   型名
name string
age integer
height float

上記のテーブルを作成する場合には、
rails generate migration user name:string age:integer height:float

指定できる型は以下の通りです。

型名 説明
string 文字列型
integer 整数型
float 浮動小数点数型
decimal 固定長整数型
datetime 日時型
timestamp タイムスタンプ型
time 時刻型
date 日付型
binary バイナリ文字列型
boolean 真偽値型

テーブルにカラムを追加する

基本的な構文は以下の通りです。
rails generate migration Addカラム名Toテーブル名 カラム名:型名

先ほど作成したuserテーブルにfloat型weightという項目を追加してみます。
rails generate migration AddWeightToUser weight:float

完了したらrails db:migrateを実行しましょう。

テーブルのカラムを削除する

基本的な構文は以下の通りです。

基本的な構文は以下の通りです。
rails generate migration Removeカラム名Toテーブル名 カラム名:型名

先ほど追加したuserテーブルのweightという項目を削除してみます。
rails generate migration RemoveWeightToUser weight:float

完了したらrails db:migrateを実行しましょう。

5
4
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
5
4