Rails4のマイグレーションの書き方
新規にテーブル作成する場合
class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.column :email, :string, null: false t.index :email end end end
カラムの追加や削除を行う場合
changeメソッドを使用する。
changeメソッドを使用した場合、ロールバック時は、勝手に処理を反転して実行してくれる。
ただし、null許容など、オプションの情報までは戻せないため、
カラム情報、インデックスの変更には、changeメソッドは活用できない。
また、changeメソッドでカラムを削除する場合は、削除前のカラムの情報を引数として
与える必要がある。
changeメソッドでロールバックができないものに対しては、up/downメソッドを使用する。
class AddNameToUsers < ActiveRecord::Migration def change # カラム追加。引数は、テーブル名、カラム名、型、オプション add_column :users, :name, :string, null:false # カラム名変更。引数は、テーブル名、変更前カラム名、変更後カラム名 rename_column :users, :email, :mail_address # カラムの型をtextにし、nullを許容しないように変更。 # 引数は、テーブル名、カラム名、変更後のカラムの設定 change_column :users, :name, :text, :null => false # インデックス追加。引数は、テーブル名、インデックスに使用するカラム名、オプション add_index :users, [:name], :unique => true end # カラムの型とnull許容を変更。 def up # upメソッドに変更後の設定を記入する。 change_column :users, :name, :text, :null => false end def down # downメソッドには、ロールバック時に使用する設定、つまり変更前の設定を記入する。 change_column :users, :name, :string :null => true end end
以下の記事が参考になりました。