はじめに
カラムの追加や削除をしたり、テーブル内の情報を変更する際に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メソッドを明示的に記載することが必要らしい。