# 高度なマイグレーション (Ruby on Rails) > 複雑なマイグレーション、reversible migrations、データマイグレーション、rollbacks、DB制約とバリデーションの比較、safe migrations - 20 面接問題 - Mid-Level - [面接問題: Ruby on Rails](https://sharpskill.dev/ja/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. 1回の操作で複数のマイグレーションを rollback できるコマンドはどれですか? **回答** rails db:rollback STEP=n コマンドは、最後に実行された n 件のマイグレーションを rollback できます。たとえば STEP=3 は、実行された順序とは逆に直近の3件のマイグレーションを rollback します。STEP オプションを指定しない場合は、最後のマイグレーションだけが rollback されます。このコマンドは、開発中にデータベースを以前の状態へ素早く戻すのに便利です。 ## さらに17問利用可能 - データマイグレーションで ActiveRecord モデルへの参照を使うのを避けるべきなのはなぜですか? - 大きなテーブルに対して本番環境でデータ移行を行う際のベストプラクティスは何ですか? 無料で登録: https://sharpskill.dev/ja/login ## その他のRuby on Rails面接トピック - [Rubyの基礎](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/ruby-basics.md): 25問, Junior - [Rubyのオブジェクト指向プログラミング](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/ruby-oop.md): 20問, Junior - [Rails の基礎](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-fundamentals.md): 18問, Junior - [Routing & Controllers](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/routing-controllers.md): 22問, Junior - [ActiveRecord の基礎](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/active-record-basics.md): 25問, Junior - [Views と ERB テンプレート](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/views-erb-templates.md): 20問, Junior - [ActiveRecord の関連付け](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/active-record-associations.md): 24問, Mid-Level - [高度なActiveRecordクエリ](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/active-record-queries.md): 28問, Mid-Level - [Rails フォーム](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-forms.md): 20問, Mid-Level - [認証と認可](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/authentication-authorization.md): 22問, Mid-Level - [モダンな Asset Pipeline とフロントエンド](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-asset-pipeline.md): 18問, Mid-Level - [Rails APIモード](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-api-mode.md): 20問, Mid-Level - [RSpecによるテスト](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-testing-rspec.md): 24問, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/active-job-background-jobs.md): 20問, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/action-cable-websockets.md): 18問, Mid-Level - [ActionMailer](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/action-mailer.md): 18問, Mid-Level - [ActiveStorage](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/active-storage.md): 20問, Mid-Level - [キャッシュ戦略](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/caching-strategies.md): 20問, Mid-Level - [Rails Engines とモジュラーアプリ](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-engines-modular-apps.md): 18問, Senior - [パフォーマンス最適化](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/performance-optimization.md): 26問, Senior - [Rails のデザインパターン](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-design-patterns.md): 22問, Senior - [Rubyのメタプログラミング](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/ruby-metaprogramming.md): 20問, Senior - [Rails のセキュリティ](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-security.md): 22問, Senior - [Rails での GraphQL](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/graphql-rails.md): 20問, Senior - [デプロイと本番環境](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/rails-deployment-production.md): 20問, Senior - [Monitoring & Logging](https://sharpskill.dev/ja/technologies/ruby-on-rails/interview-questions/monitoring-logging.md): 20問, Senior - [Rails アップグレード戦略](https://sharpskill.dev/ja/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/ja/technologies/ruby-on-rails/interview-questions/database-migrations-advanced