티스토리 뷰
Migration
: 데이터베이스 테이블을 간단하게 생성하고 수정할 수 있도록 설계된 루비 "클래스"
Rails는 테이블 생성 또는 수정에 마이그레이션(Migration)이라는 기능을 사용
Migration 파일들은 생성될 시점의 타임스탬프 값을 가짐
Migration 클래스당 하나의 파일로 db/migrate에 저장됨
migrate 어떤식으로 실행되는지?
1) rails db:migrate를 하면 스키마에 있는 타임스탬프를 읽어 옴
2) 그 타임스탬프 이후에 타임스탬프에 찍혀 있는 migration 파일들만 읽어서 migrate 함
3) Migration 파일이 migrate 되고 난 후에는 타임스탬프가 이미 적용되었기 때문에 이후 migrate 해도 스키마에 적용되지 않음
(Migration 파일이 migrate 하기 전에는 db에 등록된 정보가 아님)
4) 현재 데이터베이스를 대상으로 아직 실행되지 않은 마이그래이션만 실행
(이미 migrate 된 것들은 아무리 변경해줘도 의미 없음)
migrate 수정 방법 2가지
- 사용해야 하는 경우가 다름
1) github같은 외부저장소에 올리지 않았을 경우
rails db:rollback
=> migration 파일을 롤백 한 다음 수정 후, 다시 migrate 하기
-> 가장 마지막 migrate 파일을 롤백하게 됨(되돌리기)
사용하는 경우:
1) 아직 깃헙저장소에 올라가서 반영이 되지 않았을 경우,
2) 내가 갖고 있는 데이터가 별로 없고 그 데이터가 별로 중요하지 않을 경우 이 방법으로 수정
주의할 점:
기존 옵션의 레코드들이 많아서 그 레코드를 가지고 테스트를 해야하는데,
롤백을 한 경우 그 레코드들이 다 날라감
2) 추가적인 마이그레이션 파일 만들어서 수정
rails g migration change_columns_from_options
model이 아닌 마이그레이션 파일 만들어서 수정
coulmn 지우기 => remove_coulmn :테이블 명, :어떤 컬럼을 지울지
coulmn 수정 => rename_coulmn :테이블 명, :해당 컬럼, :바꿀 이름
coulmn 추가 => add_coulmn :테이블 명, :해당 컬럼, :데이터타입
rails db:migrate 해 주기~
※마이그레이션 파일을 삭제해도 되는지?
=> 잘 모르면 절대 지우지 말 것, 지워야할 것 같으면 물어보고 할 것
마이그레이션 파일 삭제해도 되는 경우
이미 DB에 마이그레이트 되어있지 않은 경우 + 마이그레이션 파일이 올라가 있지 않은 경우
=> 이 두가지가 모두 해당될 경우에만 삭제!
'루비온레일즈' 카테고리의 다른 글
[DataBase] 관계형 데이터 모델링이란? (2) | 2021.04.16 |
---|---|
[Ruby On Rails] ORM (0) | 2021.04.14 |
[Ruby On Rails] 쇼핑몰 데이터베이스 모델링 (0) | 2021.04.14 |
[DataBase] 데이터베이스 개념 (2) | 2021.04.13 |
[Ruby On Rails] 루비 온 레일즈란? (0) | 2021.04.12 |