0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

マイグレーション操作

Last updated at Posted at 2020-03-18

はじめに

「Ruby on Rails 5 速習実践ガイド」の本の内容(Chapter4-1)に沿ってまとめと、他に調べて知ったことも書いてみようと思います。
(内容薄いですが、、、、)

Ruby on Rails 5 速習実践ガイド(Chapter4-1)

🎈マイグレーションの適用

2つのステップ

マイグレーションは基本的に2つのステップで行います。

  1. Rubyのコードで、データベースのスキーマを変更するファイル、 「マイグレーション」ファイル を作成する
  2. rails db:migrate コマンドで、作成した「マイグレーション」ファイルをデータベースに適用する

1つのマイグレーションは1つのバージョン

1つのマイグレーション(ファイル)が、 1つのバージョンとして、扱われます。
マイグレーションファイルを作成しただけでは、データベースは変更されず(バージョンは上がらず)、マイグレーションファイルを適用するとデータベースが変更されます。
マイグレーションを取り消す(バージョンを下げる)にも、マイグレーションファイルを削除するだけでは変更されないため、取り消すコマンドを実行して、操作を適用します。

🎈バージョンの上げ下げ

下のマイグレーションファイルは、Userテーブル作成し、nameカラムとemailカラムを持つことを記述されています。
changeメソッドの中に、「Userテーブルを作成する」というコードが書かれていれば、
マイグレーションの適用を取り消す際には、「Userテーブルを削除する」というコードが書かれているかのように処理をしてくれます。

db/migrate/[timestamp]_create_users.rb
class CreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

こちらのマイグレーションファイルは、nameカラムに入る文字列の長さを制限しています。
upメソッド にバージョンを上げる処理、 downメソッド にバージョンを下げる処理を記述しています。

db/migrate/[timestamp]_change_users_name_limit10.rb
class ChangeUsersNameLimit10 < ActiveRecord::Migration[6.0]
  def up
    change_column :Users, :name, :string, limit: 30
  end

  def down
    change_column :Users, :name, :string
  end
end

🎈schema.rbについて

Railsは、データベースの構造(スキーマ)を db/schema.rb というファイルに自動で出力します。
テーブル、カラムの構造を確認できます。

Railsガイドには、このように書かれています。

Railsのマイグレーションは強力ではありますが、データベースのスキーマを作成するための信頼できる情報源ではありません。
信頼できる情報源は、やはりデータベースです。Railsは、デフォルトでデータベーススキーマの最新の状態のキャプチャを試みるdb/schema.rbを生成します。

🎈主なコマンド

migrationまわり

migrationに関する主なコマンドまとめです

コマンド           意味
bin/rails db:migrate 最新までマイグレーションを適用する
bin/rails db:migrate VERSION=20200319 特定のバージョンまでマイグレーションが適用されていた状態にする
bin/rails db:rollback バージョンを1つ戻す
bin/rails db:rollback STEP=2 バージョンを指定したステップ数だけ戻す
bin/rails db:migrate:redo バージョンを1つ戻してから1つ上げる
bin/rails db:version     現在の適応されているバージョンを表示する

dbコマンド

主なdbコマンドも少しまとめてみました

コマンド 意味
bin/rails db:create データベースが作成される
bin/rails db:drop データベースの削除される
bin/rails db:reset db:dropし、db/schema.rbにもとづいてデータベースを作り直す

おしまい

↓こちら参考にしました🎒
Ruby on Rails 5 速習実践ガイド
Railsガイド
rake or rails コマンドでdbを扱うときのメモ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?