見出し画像

db:resetとdb:migrate:resetの違い【Day 12/30 2nd】

こんにちは、たわらです。

本記事は、de:resetとdb:migrate:resetの違いを整理します。

db:reset

db:create、db:schema:load、db:seedを実行します。

つまり、Railsアプリケーションで使うデータベースを作成し、スキーマをデータベースに反映させ、データベースにダミーデータを投入します。

db:migrate:reset

データベースの初期化をします。

なので、データベースには何も入っていない状態になります。

開発の初期段階で一度データベースを空にしたいときはこちらを使うのですね。

マイグレーションとは?

Railsガイドには下記のように説明されています。太字は筆者。

マイグレーションは、データベーススキーマの継続的な変更 (英語) を、統一的かつ簡単に行なうための便利な手法です。マイグレーションではRubyのDSLを使っているので、生のSQLを作成する必要がなく、スキーマとスキーマへの変更をデータベースの種類に依存せずに済みます。

1つ1つのマイグレーションは、データベースの新しい'version'とみなすことができます。スキーマは最初空の状態から始まり、マイグレーションによる変更が加わるたびにテーブル、カラム、エントリが追加または削除されます。Active Recordは時系列に沿ってスキーマを更新する方法を知っているので、履歴のどの時点からでも最新バージョンのスキーマに更新することができます。Active Recordはdb/schema.rbファイルを更新し、データベースの最新の構造と一致するようにします。

つまり、テーブル構造の変更を記録することですね。

これまでのマイグレーションをすべて実行すれば、スキーマを最新の状態にすることができます。また、マイグレーションは、過去にも遡れるので、「〇ヶ月の状態にデータベースを戻す」ということも可能になります。

最後に

読んでくださったくださった、ありがとうございます。

参考文献

現場Rails pp95

この記事が気に入ったらサポートをしてみませんか?