※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
migrationの「change」「up」「down」について
この記事で、Artticlesのデータベースからcontentカラムを取り除いた
その際、rollbackしたときのことも踏まえてコードを書いたので、詳しく振り返る
以下のように:text
が書いてあるとrollback
したときに逆の動作(remove
⇔add
)ができる
class RemoveContentFromArticles < ActiveRecord::Migration[6.0]
def change
remove_column :articles, :content, :text
end
end
- removeは:textがなくても可能
- addは型の記載(:text)がないと失敗する
change
「rails db:migrate
」でも「rails db:rollback
」でも、両方で実行されるメソッド
changeと異なり、片方でしか実行されない
- up → migrationを実行したときに実行される
- down → rollbackを実行したときに実行される
class RemoveContentFromArticles < ActiveRecord::Migration[6.0]
def up
remove_column :articles, :content
end
def down
add_column :articles, :content, :text
end
end
基本的には「change」を使う
- upとdownを使い分けてコードを書くことは少ない
- migrationとrollbackで逆の動作をするとき、changeだと複雑になる場合がある
- そういうケースではupとdowmを使い分けることがある