rails db:createからrails db:migrateまで
rails db:create
このrails db:createコマンドでは、アプリケーションのconfig/datebase.ymlファイルに記述されている設定を元にデータベースを作成します。デフォルトでは、開発用(development)とテスト用(test)のデータベースが作成されます。
また、本番環境のデータベースを作成したい時は、RAILS_NEV=productionオプションを追加します。
rails g migration クラス名
データベースができたら、次はマイグレーションファイル(テーブルの元)の作成です。マイグレーションファイルは、このrails g migrationコマンドで作成します。このコマンドを実行すると、マイグレーションファイルの最初にそのファイルが作成された日時がタイムスタンプとしてつけられます。
Railsはこのタイムスタンプを確認しながら、どのマイグレーションファイルから実行するかを決めています。
つまり、マイグレーションファイルの作成はテーブル間のアソシエーションなどの整合性がとれる順番にしなければいけません。
Ex. UserテーブルでTransactionテーブルのFKを持っているならTransactionテーブルからマイグレーションファイルを作成しなければいけない。
rails db:migrate
ようやく、rails db:migrateコマンドです。このコマンドによって、先ほど作成したマイグレーションファイルが実行され、テーブルが作成されます。このコマンドにはさまざまなオプションがあり、とあるバージョン(タイムスタンプを指定)までマイグレーションの歴史を戻したり、一つ前のバージョンに戻したりができます。
必要に応じて調べてみてください。今回は省きます。
rails db:drop
このrails db:dropコマンドは、先ほどのcreateコマンドとmigrateコマンドで作成したデータベースとテーブル、そして格納されているデータも削除します。そのため、使用するときは注意が必要です。
私は、主に開発の初期段階でマイグレーションファイルを追加するのが面倒で、現在あるマイグレーションファイルを書き直した時とかにdb:dropをして再度db:create → db:migrateをすることが多いです(多分正規のやり方ではないですがまあまあ便利です)。
Discussion