Rails テーブル(モデル)を変更する

概要

Railsのテーブルを変更したい場合は、マイグレーションファイルを作り、マイグレーションを実行します。マイグレーションファイルは、テーブルの変更内容を記述するファイルです。

  1. マイグレーションファイルを生成する
  2. マイグレーションファイルを編集する
  3. マイグレーションを実行する

sample_dbデータベース内の、trees テーブルに name カラムを追加する。


1. マイグレーションファイルを生成する

rails generate migrationコマンドで、

$ rails generate migration AddNameToTrees

マイグレーションファイルを生成します。AddNameToTrees は任意のマイグレーション名です。

次のようなファイルが出来ます。

db/migrate/20160620210246_add_name_to_trees.rb


2. マイグレーションファイルを編集する

生成されたマイグレーションファイルを開き、add_columnメソッドで

class AddNameToTrees < ActiveRecord::Migration
 def change
  add_column :trees, :name, :string
 end
end

trees テーブルに name カラムを string 型で追加します。


マイグレーションファイルの構造

マイグレーションファイルは、次のchangeメソッドか、

class AddNameToTrees < ActiveRecord::Migration
 def change
 end
end

up, down メソッドで記述されます。

class AddNameToTrees < ActiveRecord::Migration
 def up
 end

 def down
 end
end

changeメソッドには、カラムの 変更内容を記述します。バージョンダウン時のロールバックは自動で行われます。

up, downメソッドの場合、upにはバージョンアップ内容、downにはバージョンダウン内容を記述します。changeメソッドでロールバックできない場合に使用します。


マイグレーションファイルで利用可能なメソッド

マイグレーションでは次のメソッドが使えます。

  1. テーブルの作成(create_table)
  2. テーブル名の変更(rename_table)
  3. テーブルの削除(drop_table)
  4. カラムの追加(add_column)
  5. カラム名の変更(rename_column)
  6. カラムの削除(remove_column)
  7. インデックスの追加(add_index)
  8. インデックスの削除(remove_index)

3. マイグレーションの実行

rake db:migrateコマンドで、

$ rake db:migrate

マイグレーションファイルを実行します。すると、データベースのテーブルが更新されます。


MySQLでテーブルを確認する

変更したテーブルをMySQLで確認してみます。MySQLにログインし、USEステートメントで、

mysql> USE sample_db;

sample_dbデータベースを選択した後、DESCRIBEステートメントで、

mysql> DESCRIBE trees;

treesテーブル内のカラム情報を確認できます。

以上。