はじめに
「Ruby on Rails 5 速習実践ガイド」の本の内容(Chapter4-1)に沿ってまとめと、他に調べて知ったことも書いてみようと思います。
(内容薄いですが、、、、)
Ruby on Rails 5 速習実践ガイド(Chapter4-1)
🎈マイグレーションの適用
2つのステップ
マイグレーションは基本的に2つのステップで行います。
- Rubyのコードで、データベースのスキーマを変更するファイル、 「マイグレーション」ファイル を作成する
-
rails db:migrate
コマンドで、作成した「マイグレーション」ファイルをデータベースに適用する
1つのマイグレーションは1つのバージョン
1つのマイグレーション(ファイル)が、 1つのバージョンとして、扱われます。
マイグレーションファイルを作成しただけでは、データベースは変更されず(バージョンは上がらず)、マイグレーションファイルを適用するとデータベースが変更されます。
マイグレーションを取り消す(バージョンを下げる)にも、マイグレーションファイルを削除するだけでは変更されないため、取り消すコマンドを実行して、操作を適用します。
🎈バージョンの上げ下げ
下のマイグレーションファイルは、Userテーブル作成し、nameカラムとemailカラムを持つことを記述されています。
changeメソッド
の中に、「Userテーブルを作成する」というコードが書かれていれば、
マイグレーションの適用を取り消す際には、「Userテーブルを削除する」というコードが書かれているかのように処理をしてくれます。
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メソッド
にバージョンを下げる処理を記述しています。
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を扱うときのメモ