MENU
カテゴリー

【Ruby on Rails】migrationファイル 「change・up/downの使い分け」について

  • URLをコピーしました!
目次

はじめに

カラムの追加や削除をしたり、テーブル内の情報を変更する際にmigrationファイルを追加して対応することがある。

その時に、基本的な記述として、、、

def change

end
def up

end

def down

end

という2つのパターンがある。

厳密には、ファイル名の付け方(クラス名の付け方?)、rails g migration <クラス名>で入力されるクラス名によって、上のどちらのパターンのメソッドでファイルが生成されるらしい。
ただ、このメソッド changeとup/downの違いがいまいちわからなかったのでまとめておく。

changeとup/downの違い

違いとしては、メソッドの中で使用できる処理に違いがあるらしい。
Rails公式ドキュメントには以下の処理がchangeメソッドでは使用できるらしい。

現時点では、changeでサポートされているマイグレーション定義は以下のものだけです。

add_column
add_foreign_key
add_index
add_reference
add_timestamps
change_column_default (:fromと:toの指定は省略できない)
change_column_null
create_join_table
create_table
disable_extension
drop_join_table
drop_table (ブロックを渡さなければならない)
enable_extension
remove_column(型を指定しなければならない)
remove_foreign_key(2番目のテーブルを指定しなければならない)
remove_index
remove_reference
remove_timestamps
rename_column
rename_index
rename_table

(Rails公式ドキュメントより引用しております。 https://railsguides.jp/active_record_migrations.html)

上記に記載の処理以外を使用する時には、up/downメソッドを明示的に記載することが必要らしい。

よかったらシェアしてね!
  • URLをコピーしました!
目次