Ruby
Rails

押さえておきたい!「Ruby on Rails」マイグレーションを使ったカラムの変更方法まとめ

More than 3 years have passed since last update.


はじめに

「Ruby on Rails」で必ず必要になってくる、マイグレーション系

一度作成したカラムを変更したいときってありますよね。

今回は最低限押さえておきたい、マイグレーションを使ったカラムの変更方法をまとめてみました。


そもそもマイグレーションって?

マイグレーションとはマイグレーションファイルというものを元にテーブルを新規に作成したりカラムやインデックスの追加といった変更を行なうことが出来ます。

つまりマイグレーションファイルさえあれば、簡単にカラムを変更することが出来るのです。


マイグレーションファイル実行までの手順

ざっくり説明すると

マイグレーションファイル作成 → 生成したマイグレーションファイルの編集 → マイグレーションファイル実行

これだけです。

では実際にマイグレーションを使ったカラムの変更方法をご紹介していきます。


カラムの追加

$ rails generate migration Addカラム名Toテーブル名 カラム名:型名

例:($ rails generate migration AddHogeToHuga hoge:string)

「Addカラム名Toテーブル名」のカラム名とテーブル名は先頭を大文字にして記入します。

これでマイグレーションファイルを生成することが出来ます。

あとは

$ rake db:migrate

で実行してデータベースに反映させます。(生成したマイグレーションを弄らなくても大丈夫)


カラムの削除

$ rails generate migration remove_カラム名_to_テーブル名 カラム名

例:($ rails generate migration remove_hoge_to_huga hoge)

これでマイグレーションファイルを生成することが出来ます。

あとは

$ rake db:migrate

で実行してデータベースに反映させます。(生成したマイグレーションを弄らなくても大丈夫)


カラムの型変更

$ rails generate migration change_カラム名_to_テーブル名

例:($ rails generate migration change_hoge_to_huga)

これでマイグレーションファイルを生成することが出来ます。

次に生成したマイグレーションファイルを編集します。


20141124000000_change_column_to_Huga.rb

class ChangeColumnToHuga < ActiveRecord::Migration

#変更後の型
def up
change_column :Hugas, :hoge, :integer, null: false, default: 0
end

#変更前の型
def down
change_column :Hugas, :hoge, :intger, null: true
end
end


このように編集します。

(「def up」「def down」はマイグレーションファイル生成時記述されていませんが、上書きして大丈夫です)

最後に

$ rake db:migrate

で実行してデータベースに反映させます。

以上です。カラムの変更は頻繁に行われるのでここは押さえておきたいですね。