超初心者がエンジニアになるまでの力戦奮闘の軌跡

プログラミングをメインで学んだことのアウトプットブログ

学んだこと 〜2022/8/27〜

今日学んだ知識

Ruby(Rails)

1.DBMS(データベースマネジメントシステム)とは?

データベースはただの場所であり、そのデータベースにデータを登録したり取得したりするソフトウェアのこと。

無料で使えるものにMySQLPostgreSQLSQLiteなどがある。

しかし、実際にRailsで開発する際にデータベースへの登録などはSQLを使ってこなかった。これはRailsActiveRecordというライブラリを経由することでSQLを触ることなくでデータを操作できるから。

つまりActiveRecordではRubyのコードをSQLに変換するという操作を行なってくれる。

# RubyでBookクラスのデータを全て取得するコードを
Book.all

↓ ActiveRecordで

# SQLでBookクラスのデータを全て取得するコードに変換される
select * from books;

モデルを作成するとclass Book < ApplicationRecordとなっており、作成したモデルはActiveRecordをベースにしているApplicationRecordを継承しているため、、モデル作成と同時にActiveRecordの機能が備わっている。

さらにActiveRecordにはデータベースから取得したデータ(レコード)をモデルのインスタンスへ変換するという機能がある。

例:

id = 1

book = Book.find(id)

# ActiveRecordのfindメソッドでid=1のデータを取得し、bookに代入することでBookモデルのインスタンスになる。
2.Bookモデルはrails g model Bookで作成したが、これに対応するBookテーブルはどうやって作成されるのか?

まずデータベースのテーブル自体を操作するのはRailsマイグレーションという機能。マイグレーションでは「マイグレーションファイルの作成」「マイグレーションファイルの実行」という2段階を行う。

rails g modelというコマンドでモデルと一緒にマイグレーションファイルも作成される。=>マイグレーションファイルの作成

rails db:migrateというコマンドでマイグレーションファイルを実行し、そのファイルを元にテーブルが作成される。=>マイグレーションファイルの実行

マイグレーションファイルは実行したら、そのあとは編集しない!開発途中でテーブルに変更を加える場合はrails g migration addなどで新たにマイグレーションファイルだけを作成し、rails db:migrateで実行する。

つまりイメージでは新しいマイグレーションファイルで前のマイグレーションファイルを上書きしてしまうみたいな感じかな?