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
この記事が気に入ったらサポートをしてみませんか?