概要
Railsのテーブルを変更したい場合は、マイグレーションファイルを作り、マイグレーションを実行します。マイグレーションファイルは、テーブルの変更内容を記述するファイルです。
- マイグレーションファイルを生成する
- マイグレーションファイルを編集する
- マイグレーションを実行する
例
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メソッドでロールバックできない場合に使用します。
マイグレーションファイルで利用可能なメソッド
マイグレーションでは次のメソッドが使えます。
- テーブルの作成(create_table)
- テーブル名の変更(rename_table)
- テーブルの削除(drop_table)
- カラムの追加(add_column)
- カラム名の変更(rename_column)
- カラムの削除(remove_column)
- インデックスの追加(add_index)
- インデックスの削除(remove_index)
- 他
3. マイグレーションの実行
rake db:migrateコマンドで、
$ rake db:migrate
マイグレーションファイルを実行します。すると、データベースのテーブルが更新されます。
MySQLでテーブルを確認する
変更したテーブルをMySQLで確認してみます。MySQLにログインし、USEステートメントで、
mysql> USE sample_db;
sample_dbデータベースを選択した後、DESCRIBEステートメントで、
mysql> DESCRIBE trees;
treesテーブル内のカラム情報を確認できます。
以上。