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

1回の操作で複数のマイグレーションを rollback できるコマンドはどれですか?

回答

rails db:rollback STEP=n コマンドは、最後に実行された n 件のマイグレーションを rollback できます。たとえば STEP=3 は、実行された順序とは逆に直近の3件のマイグレーションを rollback します。STEP オプションを指定しない場合は、最後のマイグレーションだけが rollback されます。このコマンドは、開発中にデータベースを以前の状態へ素早く戻すのに便利です。

4

データマイグレーションで ActiveRecord モデルへの参照を使うのを避けるべきなのはなぜですか?

5

大きなテーブルに対して本番環境でデータ移行を行う際のベストプラクティスは何ですか?

+17 面接問題

次の面接に向けてRuby on Railsをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める