Ruby on Rails

고급 마이그레이션

복잡한 마이그레이션, reversible migrations, 데이터 마이그레이션, rollbacks, DB 제약 조건 대 검증, safe migrations

20 면접 질문·
Mid-Level
1

Rails 마이그레이션에서 change 메서드와 up/down 메서드의 차이점은 무엇인가요?

답변

change 메서드는 Rails 3.1에서 도입된 단순화된 구문으로, Rails가 역방향 작업을 자동으로 추론할 수 있게 해줍니다. add_column이나 create_table 같은 대부분의 일반적인 작업에서 동작합니다. up 및 down 메서드는 적용 및 rollback 작업에 대한 명시적인 제어를 제공하며, 데이터 삭제나 복잡한 변환처럼 Rails가 역방향을 자동으로 추론할 수 없을 때 필요합니다.

2

Rails가 역방향 작업을 자동으로 추론할 수 없을 때 마이그레이션을 reversible하게 만들려면 어떻게 해야 하나요?

답변

reversible 블록을 사용하면 change 메서드 내에서 up 및 down 작업을 명시적으로 정의할 수 있습니다. 이는 특히 remove_column 같은 작업에서 유용한데, rollback 시 컬럼을 다시 생성하려면 Rails가 컬럼의 타입과 옵션을 알아야 하기 때문입니다. reversible 블록은 change의 모던한 구문을 유지하면서 up/down의 유연성을 제공합니다.

3

한 번의 작업으로 여러 마이그레이션을 rollback할 수 있는 명령은 무엇인가요?

답변

rails db:rollback STEP=n 명령은 마지막으로 실행된 n개의 마이그레이션을 rollback할 수 있게 해줍니다. 예를 들어 STEP=3은 실행 순서의 역순으로 최근 세 개의 마이그레이션을 rollback합니다. STEP 옵션이 없으면 마지막 마이그레이션 하나만 rollback됩니다. 이 명령은 개발 중에 데이터베이스를 이전 상태로 빠르게 되돌리는 데 유용합니다.

4

데이터 마이그레이션에서 ActiveRecord 모델 참조 사용을 피해야 하는 이유는 무엇인가요?

5

대용량 테이블에 대해 프로덕션에서 데이터 마이그레이션을 수행하는 모범 사례는 무엇입니까?

+17 면접 질문

다음 면접을 위해 Ruby on Rails을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기