データベース本体に関する操作
rails db:create
データベースの作成
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
rails db:drop
データベースの削除
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
テーブルに関する操作
rails db:migrate
migrationファイルを実行し、テーブルを作成する(全てのmigrationファイルが対象)
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest) - VERSION
指定したバージョン以前のmigrationを全てupに、それより後のmigrationを全てdownにする
rails db:rollback
最新のmigrationを1つdownにする
<使用可能オプション>
- STEP
downにするmigrationの数を指定する - rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
rails db:migrate:status
migrationの状態を表示する
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopment)
rails db:migrate:up
VERSIONオプションで指定したmigrationをupにする
<使用可能オプション>
- VERSION
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
rails db:migrate:down
VERSIONオプションで指定したmigrationをdownにする
<使用可能オプション>
- VERSION
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
rails db:schema:dump
現在のデータベースの状態に合わせて、db/schema.rbを更新する
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopment)
rails db:schema:load
db/schema.rbにあわせて、データベースを更新する(migrationファイルを参照しない)
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest)
レコードに関する操作
rails db:seed
dbディレクトリのseeds.rbファイルを実行し、レコードを作成する
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopment)
rails r ファイルpath例:rails r db/seeds/test.rb
特定のseedファイルを実行し、レコードを作成する
いくつかの操作をまとめた物
rails db:setup
rails db:create
rails db:schema:load
rails db:seed
をまとめた物
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest ※seedはdevelopmentのみ)
rails db:reset
rails db:drop
rails db:create
rails db:schema:load
rails db:seed
をまとめた物
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest ※seedはdevelopmentのみ)
rails db:migrate:redo
rails db:rollback
rails db:migrate
をまとめた物
<使用可能オプション>
- STEP
やり直すmigrationの数を指定する - rails_ENV
環境を指定する(デフォルトはdevelopmentとtest) - VERSION
対象のmigrationを指定する
rails db:migrate:reset
rails db:drop
rails db:create
rails db:migrate
をまとめた物
<使用可能オプション>
- rails_ENV
環境を指定する(デフォルトはdevelopmentとtest) - VERSION
指定したバージョン以前のmigrationを全てupに、それより後のmigrationを全てdownにする
補足
rakeとrailsの違い
Ruby on Railsのデータベース操作のコマンドを調べていると、rails ~というものとrake ~というものの2種類が見つかります。
これらは、Railsのバージョン4まででは区別をして使用していた物を、バージョン5より区別がなくなったそうなので、バージョン5以降を使用する場合は、全てrails ~で実行できる、とのことです。
schema.rbとは
migrationファイルは、それぞれのテーブルの設計図のような物です。
それに対してschema.rbは、現在のデータベースの構造を表した設計図のような物のようです。
すでに問題なく動いている環境をコピーする場合、migrationファイルではなくschema.rbを元にデータベースを構築した方が間違いの元を減らせる、という風にRailsの公式ドキュメントに記載があります。
参考ページ
Active Record Migrations — Ruby on Rails Guides
Ruby on Railsでよく使う rake db コマンドまとめ13選 | caramelCase