# 고급 마이그레이션 (Ruby on Rails) > 복잡한 마이그레이션, reversible migrations, 데이터 마이그레이션, rollbacks, DB 제약 조건 대 검증, safe migrations - 20 면접 질문 - Mid-Level - [면접 질문: Ruby on Rails](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions.md) ## 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됩니다. 이 명령은 개발 중에 데이터베이스를 이전 상태로 빠르게 되돌리는 데 유용합니다. ## 17개 추가 질문 이용 가능 - 데이터 마이그레이션에서 ActiveRecord 모델 참조 사용을 피해야 하는 이유는 무엇인가요? - 대용량 테이블에 대해 프로덕션에서 데이터 마이그레이션을 수행하는 모범 사례는 무엇입니까? 무료로 가입하기: https://sharpskill.dev/ko/login ## 기타 Ruby on Rails 면접 주제 - [Ruby 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-basics.md): 25개 질문, Junior - [Ruby 객체 지향 프로그래밍](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-oop.md): 20개 질문, Junior - [Rails 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-fundamentals.md): 18개 질문, Junior - [Routing & Controllers](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/routing-controllers.md): 22개 질문, Junior - [ActiveRecord 기초](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-basics.md): 25개 질문, Junior - [Views와 ERB 템플릿](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/views-erb-templates.md): 20개 질문, Junior - [ActiveRecord 연관 관계](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-associations.md): 24개 질문, Mid-Level - [고급 ActiveRecord 쿼리](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-record-queries.md): 28개 질문, Mid-Level - [Rails 폼](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-forms.md): 20개 질문, Mid-Level - [인증과 인가](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/authentication-authorization.md): 22개 질문, Mid-Level - [최신 Asset Pipeline 및 프런트엔드](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-asset-pipeline.md): 18개 질문, Mid-Level - [Rails API 모드](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-api-mode.md): 20개 질문, Mid-Level - [RSpec를 사용한 테스트](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-testing-rspec.md): 24개 질문, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-job-background-jobs.md): 20개 질문, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/action-cable-websockets.md): 18개 질문, Mid-Level - [ActionMailer](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/action-mailer.md): 18개 질문, Mid-Level - [ActiveStorage](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/active-storage.md): 20개 질문, Mid-Level - [캐싱 전략](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/caching-strategies.md): 20개 질문, Mid-Level - [Rails Engines 및 모듈식 앱](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-engines-modular-apps.md): 18개 질문, Senior - [성능 최적화](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/performance-optimization.md): 26개 질문, Senior - [Rails 디자인 패턴](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-design-patterns.md): 22개 질문, Senior - [Ruby 메타프로그래밍](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/ruby-metaprogramming.md): 20개 질문, Senior - [Rails 보안](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-security.md): 22개 질문, Senior - [Rails에서의 GraphQL](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/graphql-rails.md): 20개 질문, Senior - [배포 및 프로덕션](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-deployment-production.md): 20개 질문, Senior - [Monitoring & Logging](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/monitoring-logging.md): 20개 질문, Senior - [Rails 업그레이드 전략](https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/rails-upgrade-strategies.md): 18개 질문, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/ko/technologies/ruby-on-rails/interview-questions/database-migrations-advanced