これは何?
Railsガイドのマイグレーションを後で扱いやすいようにまとめました。
コマンドで生成するマイグレーション
bundle exec rails generate migration hogehoge
のhogehoge
の部分を変えることで色々作成できるようなのでまとめます。
- AddXXXToYYY カラム名:型 カラム名:型 ・・・
- RemoveXXXFromYYY カラム名:型 カラム名:型 ・・・
- CreateYYY カラム名:型 カラム名:型 ・・・
YYY
:テーブル名(複数形)
XXX
:カラム名(複数カラム追加する場合は適当で良い)
上記はよく使うやつですが、こちらを参照するといかにいろんなコマンドが用意されてるかがわかるので必要に応じて使ってください。
僕の場合は、上記だけ最低限押さえた上で、あとはマイグレーションファイルを自作して行く形でいいのかなーと思ってます。
注意点
ちなみに、上記ではテーブル名を指定するために複数形でYYY
を記載してましたが、
モデルを生成する時にはテーブル名ではなくてモデルのクラス名を指定するので単数形となる点を注意してください。
bundle exec rails generate model User name:string
bundle exec rails generate migration CreateUsers name:string
自作するマイグレーション
まずは基礎
下記は、usersにnameカラムがあるテーブルを作成するファイルです。
create_table :users do |t|
t.string :name
end
なお、これだけでも主キーのid
が追加されるので安心して下さい。
よく使うオプションを付け加えると下記のようになります。
create_table :users do |t|
t.string :name
t.string :email, null: false
t.boolean :dev, null: false, default: false
end
テーブル変更
change_table :users do |t|
t.remove :email, :password
t.string :name
t.index :name
t.rename :latitude, :lat
end
カラム変更
コマンドでカラム変更をする方法がなかったですが、簡単です。
すでに、
add_column :users, :name, :string
でカラムが作成されてるものの型を変更したいときは下記のようにします。
change_column :users, :name, :text
後で、よくNullを禁止したいとかDefault値を入れたくなることが多いので、その参考を記載しておきます。
change_column :users, :email, :string, null: false, default: "test@gmail.com"
ロールバック
直前に行ったマイグレーションが間違っていて、訂正したい場合は下記のコマンドを入力すれば元に戻ります。
bundle exec rails db:rollback
これは直前のマイグレーションのロールバックとなりますが、
マイグレーションを複数ロールバックしたい場合はSTEPパラメータを含めれば一気に元に戻すことができます。
bundle exec rails db:rollback STEP=4
これで最後に行った4つのマイグレーションがロールバックされます。
その他
- DB削除
bundle exec rails db:drop
- 別環境でのマイグレーション実行
bundle exec rails db:migrate RAILS_ENV=test