ブシトラの日記

エンジニア1年生の雑多記事

Railsガイド6.0読み直す ~3章 Active Record マイグレーション~

busitora.hatenablog.com

 

2章は上記。

ridgepoleでぽんぽんmigrateしてるから忘れてそう。いざ参る。

マイグレーションの概要

最初、直接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

マイグレーションを作成する

マイグレーションを自作する

schemaに後からnull成約つけたりすると、存在するデータとバッティングおこしがちだからここは慎重になりたい

remove_column

add_column

change_column

どれも忘れてる。。

マイグレーションを実行する

rails db:migrate
rails db:reset
rails db:migrate:reset
rails db:rollback

たくさんあるよねー

rails db:migrate RAILS_ENV=test

デフォだとtestは実行されないからRSPecで詰まった記憶がある

5 既存のマイグレーションを変更する

既存のマイグレーションを直接変更するのは一般的によくありません。既存のマイグレーションを変更すると、自分どころか共同作業者にまで余分な作業を強いることになります。さらに、既存のマイグレーションが本番環境で実行中の場合、ひどい頭痛の種になるでしょう。

 これよく聞く。migrationファイルでごちゃごちゃになるって

スキーマダンプの意義

7 Active Recordと参照整合性

マイグレーションとシードデータ

rails db:fixtures:load を使おう - KAYAC engineers' blog

↑とかあるよね

yml形式だからちょいと自分は苦手感あるけど

9 古いマイグレーション

感想

結構忘れてる&ridgepoleに慣れすぎてる感ある。。

またmigrate使わざるを得ない時に復習すればいいや