Railsガイド6.0読み直す ~3章 Active Record マイグレーション~
2章は上記。
ridgepoleでぽんぽんmigrateしてるから忘れてそう。いざ参る。
1 マイグレーションの概要
最初、直接Schemaいじりがちだったのを思い出した
created_atのnull成約外して db:resetせざるを得ない(ここにたどり着くまでに時間かかる)こともあった
class ChangeProductsPrice < ActiveRecord::Migration[5.0] def change reversible do |dir| change_table :products do |t| dir.up { t.change :price, :string } dir.down { t.change :price, :integer } end end end end
これ初見。reversible
2 マイグレーションを作成する
3 マイグレーションを自作する
schemaに後からnull成約つけたりすると、存在するデータとバッティングおこしがちだからここは慎重になりたい
remove_column
add_column
change_column
どれも忘れてる。。
4 マイグレーションを実行する
rails db:migrate
rails db:reset
rails db:migrate:reset
rails db:rollback
たくさんあるよねー
rails db:migrate RAILS_ENV=test
デフォだとtestは実行されないからRSPecで詰まった記憶がある
5 既存のマイグレーションを変更する
既存のマイグレーションを直接変更するのは一般的によくありません。既存のマイグレーションを変更すると、自分どころか共同作業者にまで余分な作業を強いることになります。さらに、既存のマイグレーションが本番環境で実行中の場合、ひどい頭痛の種になるでしょう。
これよく聞く。migrationファイルでごちゃごちゃになるって
6 スキーマダンプの意義
7 Active Recordと参照整合性
8 マイグレーションとシードデータ
rails db:fixtures:load を使おう - KAYAC engineers' blog
↑とかあるよね
yml形式だからちょいと自分は苦手感あるけど
9 古いマイグレーション
感想
結構忘れてる&ridgepoleに慣れすぎてる感ある。。
またmigrate使わざるを得ない時に復習すればいいや