migration으로 rollback 가능 여부로 change 또는 up/down를 구분
첫 투고입니다. 잘 부탁드립니다.
롤백 가능 (change로 OK)
열 추가
rails g migration AddColumnUsers
class AddColumnUser < ActiveRecord::Migration[6.0]
def change
add_column :users, :age, :integer
end
end
열 이름 바꾸기
class RenameColumnFilmsReviewsFromNameToTitle < ActiveRecord::Migration[6.0]
def change
rename_column :films_reviews, :name, :title
end
end
열에 색인 추가
class AddIndexToUserOfName < ActiveRecord::Migration[6.0]
def change
add_index :users, :name_badge:
end
end
열에 기본값 설정(change_column_default 사용)
class ChangeColumnDefaultUserOfSocial < ActiveRecord::Migration[6.0]
def change
change_column_default :users, :social, from: nil, to: false
end
end
rollback 할 수 없다 (up / down으로 쓴다)
change로 작성하면 다음 오류가 발생합니다.
Caused by:
ActiveRecord::IrreversibleMigration:
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
열의 데이터 형식 변경
rails g migration ChangeColumnUsersToGender
class ChangeDataUserToGender < ActiveRecord::Migration[6.0]
def up
change_column :users, :gender, :boolean
end
def down
change_column :users, :gender, :integer
end
end
열에 null을 허용하지 않도록 변경
class ChangeColumnUserForName < ActiveRecord::Migration[6.0]
def up
change_column :users, :name, :string, null: false
end
def down
change_column :users, :name, :string, null: true
end
end
열에 기본값 설정 (change_column_default를 사용하지 않는 경우)
# change_column_defaultを使うとchangeでもrollbackできる
class AddDefaultValueUserOfOccupation < ActiveRecord::Migration[6.0]
def up
change_column :users, :occupation, :integer, default: 1
end
def down
# default値を指定していなかった場合 default:nilと書かないとrollback時にnilに戻らない
change_column :users, :occupation, :integer, default: nil
end
end
RailsGuide에 따르면 복잡한 일을 할 때는 reversible을 사용합시다는 것도 있지만, 그것은 또 다른 기회에. (또 이번이라고 하는 때는 우선 쓰지 않을지도 모릅니다만 )
마이그레이션을 역방향으로 실행(롤백)하는 방법을 추측할 수 없는 경우, reversible 를 사용합니다.
Reference
이 문제에 관하여(migration으로 rollback 가능 여부로 change 또는 up/down를 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koni4k/items/294342048cb6d47bcc3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)