2
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?

[初心者向け🔰]Ruby on Railsでモデルからテーブルが作られるまでの流れを最小ステップで理解する

Last updated at Posted at 2025-07-28

はじめに

Ruby on Rails でモデルからテーブルが作られる流れを学んだとき、つまずいたポイントがいくつかありました。
同じように悩む初学者の方の助けになればと思い、学んだ内容をまとめて記事にしてみました。できるだけシンプルに、流れがつかめるような構成を意識しています。

🎯 本記事の目的

  • モデルを作ってからテーブル作成されるまでの流れをざっと理解する。
  • マイグレーションファイルの役割と流れを掴む。
  • マイグレーションの downup 状態を知る。
  • schema.rb から何がわかるかを知る。

✅ 結論(ざっくり全体像)

下記の順序に沿ってモデルがつくられ、そしてデータベーステーブルが作成されます。

  1. rails generate model名 でモデルとマイグレーションファイルが生成される
  2. マイグレーションファイルはまだ「down」の状態
  3. rails db:migrate を実行するとマイグレーションが「up」される
  4. テーブルが作成され、db/schema.rb が更新される

以下詳しく解説します。


お願い

※これから下記ステップで実践するコマンド等は、各自Ruby on Railsの動作する環境を用意して実行してください。今回の解説記事内では環境構築の説明は行いません。

🛠️ ステップ① モデル作成

下記コマンドを実行してモデルを作成してください。
モデル作成時点ではまだDBのテーブルは作成されていません。
また、モデル自体はRubyのクラスであって、DBのテーブルそのものではありません。

rails generate model Article title:string body:text

上記コマンドの補足

  • Article (モデル名を指定する。今回はArticleと指定する。)
    • モデル(class)名
    • モデル名は単数形
  • title:string
    • 文字列型のtitleカラム
  • body:text
    • テキスト型のbodyというカラム

上記で実行したコマンドによって次の2つのファイルが作られます。

  • app/models/article.rbモデル(class)ファイル
  • db/migrate/xxxxxxxxxxxxxx_create_articles.rbマイグレーションファイル

マイグレーションファイルの補足

マイグレーションファイル内にはテーブルに関する様々な記述がされています。
マイグレーションファイル実行時( rails db:migrate )に、ファイル内に記述されていることに沿ってテーブルが作成されたり、カラムが操作されます。

rails db:migrateするまではテーブルはまだ存在していません。
 マイグレーションファイルはテーブル作成前の設計図として扱われます。

db/migrate/xxxxxxxxxxxxxx_create_articles.rbのxxxxxxxxxxxxxxの補足

xxxxxxxxxxxxxxにはモデルが作成された日時が表示されます。
この日時はマイグレーションのバージョン管理に利用されます。

実際のファイルの中身は下記のようになっているかと思います。

ruby  app/models/article.rb
#モデル
class Article < ApplicationRecord
end
ruby db/migrate/xxxxxxxxxxxxxx_create_articles.rb
#マイグレーションファイル
class CreateArticles < ActiveRecord::Migration[7.0]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

🔼 ステップ② マイグレーション実行(down → up)

rails db:migrateを実行する前に下記コマンドを実行してください。

rails db:migrate:status

rails db:migrate:statusコマンドは、マイグレーションファイルが実際に実行されたかどうかの状態を確認するコマンドになります。

上記コマンド(rails db:migrate:status)を実行すると、マイグレーションが実行されていなければ、下記のように Statusdown になっているかと思います。

この Statusdown という状態は、そのマイグレーションがまだ実行されていないことを意味しています。
つまり、そのマイグレーションファイルがまだデータベースに反映されていないという状態を表しています。

 Status   Migration ID    Migration Name
--------------------------------------------------
  down    20250727135706  Create articles

上記のマイグレーションが実行されていないとStatusdownになるということを確認したら、いよいよ下記の rails db:migrate コマンドを入力してマイグレーションファイルを実行してください。

rails db:migrate

上記 rails db:migrate コマンドを入力したら、下記rails db:migrate:statusコマンドを実行してマイグレーションファイルがデータベースに反映されたかどうか確認してください。

rails db:migrate:status

正常にマイグレーションが実行されていたら、下記のように Statusupの状態になっているかと思います。このような状態になっていれば、マイグレーションファイルが正しく実行されたということになり、articlesテーブルが作成(create)されたということになります。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20250727135706  Create articles

🗂️ ステップ③ schema.rb が作られる

マイグレーションが実行されると(rails db:migrate)、Railsは db/schema.rb を自動生成・更新します。
中身は現在のDB構造のスナップショットになります。
このファイルを見れば、現在どんなテーブル、カラムがあるのか確認することができます。

ActiveRecord::Schema[7.0].define(version: 2025_07_27_135706) do
  create_table "articles", force: :cascade do |t|
    t.string "title"
    t.text "body"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

実際に作成したarticlesテーブルが存在しているかどうかをrails consoleを使用して確認してみましょう。下記コマンドを実行してください。

rails consoleとは
rails console は、Railsアプリの内部データやロジックをリアルタイムで操作・確認できる対話型Rails実行環境になります。

rails console

上記コマンドで対話モードに入ったら下記メソッドを入力してください。

Article.table_exists?

Article.table_exists?を入力して下記のようにtrueが返されたら、無事articlesテーブルが作成されたということになります。

=> true

また、下記メソッドを入力するとarticlesテーブルのカラムを確認することができます。

Article.attribute_names

下記がarticlesデーブルのカラム一覧になります。

=> ["id", "title", "body", "created_at", "updated_at"]

おわりに

今回は、Railsでモデルを作ってテーブルができるまでの流れを自分なりにまとめてみました。初めてRailsに触れる方でも「なんとなくわかったかも」と思ってもらえたら嬉しいです。
もし内容に間違いがあったり、わかりにくい部分があれば、ぜひ遠慮なく教えてください!
学びながら書いているので、フィードバックもらえるととてもありがたいです!

参考記事

https://railsguides.jp/active_record_migrations.html
https://qiita.com/Arashi-K/items/4e26fd367847b8bbed18
https://www.divx.co.jp/media/164

2
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
2
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?