rails db:create | データベースを作成する |
---|---|
rails db:drop | データベースを削除する |
rails db:migrate | マイグレーションファイルの内容をDBに反映させる |
rails db:migrate:status | 現在のマイグレーション状態を表示する(いままでにmigrationをした履歴が表示される) |
rails db:prepare | DBが存在すればマイグレーションを、存在しなければデータベースのセットアップを実行 |
rails db:reset | データベースをdropして、db:setupを実行する |
rails db:rollback | 実行したマイグレーションを取り消す |
rails db:schema:dump | DBの構成をdb/schema.rbへ出力する |
rails db:schema:load | db/schema.rbの内容を実行する |
rails db:seed | db/seeds.rbの内容を実行する |
rails db:seed:replant | DBの内容をTRUNCATEし、スキーマの読み込みとシードデータの読み込みを行う |
rails db:setup | データベースを作成し、スキーマの読み込みとシードデータの読み込みを行う |
rails db:version | 現在適応しているマイグレーションのバージョンを表示する |
rails db:reset
はmigrate、drop、createを一気に行うコマンド
rails db:rollback
は一番最後のマイグレーションファイルの内容を戻します。複数戻したいときはSTEPを使って、rails db:rollback STEP=2
のように書きます。
rails db:seed:replant
は全部データを削除してから、 seed データを投入します。
RAILS_ENV
を指定しない場合は、developmentとtest環境のスキーマを作成して、production環境のデータベースを作成したいときは下記のように環境変数RAILS_ENV
を指定します。
$ bin/rails db:create RAILS_ENV=production
Rails6 のちょい足しな新機能を試す95(db:prepare 編) - Qiita
DBへテーブル定義を反映させてみます。bin/rails db:migrate:status
でデータベースへ反映済みの状態を確認できます。upは適用済みを表しています。
$ bin/rails db:migrate:status
Schema migrations table does not exist yet.
$ bin/rails db:migrate
== 20211227053840 CreateBlogs: migrating ======================================
-- create_table(:blogs)
-> 0.0031s
== 20211227053840 CreateBlogs: migrated (0.0032s) =============================
== 20211227053956 CreateEntries: migrating ====================================
-- create_table(:entries)
-> 0.0049s
== 20211227053956 CreateEntries: migrated (0.0050s) ===========================
$ bin/rails db:migrate:status
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20211227053840 Create blogs
up 20211227053956 Create entries
scaffoldで作成したマイグレーションファイル。マイグレーションファイル内で使えるメソッドはup
とdown
とchange
メソッドです。ここではchange
メソッドを使っています。
class CreateEntries < ActiveRecord::Migration[6.0]
def change
create_table :entries do |t|
t.string :title
t.text :body
t.references :blog, null: false, foreign_key: true
t.timestamps
end
end
end
upメソッド:テーブルの情報を反映する時に使用
downメソッド:テーブルの情報を巻き戻す時に使用
changeメソッド:upとdownそれぞれで呼ばれるメソッド。下記がchangeでサポートされているマイグレーション定義の一覧です。
changeとupの使い分け