【Ruby on Rails】モデルとは

実行環境

■MacOS
■Visual Studio Code
■Ruby
■Ruby on Rails

前回の記事は下記になります。

【Ruby on Rails】Webアプリケーションの雛形を作る

2021.04.12

 

モデル(Model)とは

モデルとは、MVCの「M」の部分にあたり、データの管理役です。

データベースにテーブルを用意してデータを保存するからこそ、Webアプリケーションはそれらを利用して画面上に様々なデータが表示できます。

このデータのやり取りに必要なのがモデルになります。

モデルを介して、コントローラーでデータを取得し、画面に表示させています。

 

モデルの作成

Railsアプリケーションでモデルを作成していきます。

rails g modelコマンド

モデルやそれに付随するファイルを一度に作成してくれるコマンドです。

// モデルを作成
rails g model モデル名

モデルの命名規則は、単数形を使用することです。

例えば、顧客の情報を管理する場合は、「customer」、商品の情報を管理する場合は「item」という名前になります。

※ちなみにコントローラーは複数形です。

 

テーブルの仕様を決める

「rails g modelコマンド」でモデルを作成した際、db/migrate/ディレクトリに「20XXXXXXXXXXX_create_posts.rb」というファイルが生成されます。

このファイルは、データベースにテーブルを作成する重要な役割を持っています。

db/migrate/ディレクトリに入っているファイルは、マイグレーションという役割を持ちます。

 

マイグレーション

マイグレーションとは、テーブルの設計図・仕様書です。

どのようなテーブルにするのかをマイグレーションファイル内へ記載します。

モデルを作成した際、「20XXXXXXXXXXX_create_posts.rb」というマイグレーションファイルも作成されるのは、モデルは1つのテーブルを管理する場合が多いためです。

 

マイグレーションの書き方

現在、モデルは作成できているものの、そのモデルが管理するテーブルは作成できていません。

マイグレーションを編集して、どのようなテーブルにするか決める必要があります。

class CreateComments < ActiveRecord::Migration[6.0]
  def change
    create_table :comments do |t|
      t.string :text # textカラムを追加
      t.timestamps
    end
  end
end

上記のように記載することで、textカラムを追加できます。

t.に続くのがカラム型、その右側にシンボルで記載されるものがカラム名です。

マイグレーションファイルには、デフォルトで「timestamp」が記載されています。

これは、型の名称ではなく、Railsが独自に用意している特別なものです(特に気にする必要はありません)。

 

マイグレーションを実行する

マイグレーションファイルにテーブルの設計図となるカラムを追加したら、マイグレーションファイルを実行します。

データベースの変更をするためには、テーブル情報の記入を終えたマイグレーションを実行する必要があります

マイグレーションの実行には、Railsアプリのディレクトリで「rails db:migrate」コマンドを使用します。

 

rails db:migrateコマンド

マイグレーションに記述した内容をデータベースに適用するためのコマンドです。

この動作は、マイグレートと呼ばれることがあります。

マイグレーションを実行してテーブルを作成する

以下のコマンドを実行してマイグレーションを実行し、データベースにテーブルを追加します。

# マイグレーションの実行
  rails db:migrate

 

マイグレーションの修正

マイグレーションは、一度実行すると再度実行できない仕組みになっています。

これは、設計書であるマイグレーションを履歴として残し、どのような変更が行われてきたか見ることができるようにするためです。

rails db:rollbackコマンド

マイグレーション実行による変更を差し戻すためのコマンドです。

rails db:rollback

ロールバック→修正→マイグレートで、テーブルを修正できます。

この動作は、ロールバックと呼ばれることがあります。

 

rails db:migrate:statusコマンド

マイグレーションが実行済みであるかをファイルごとに調べるコマンドです。

rails db:migrate:status

状態を表すステータスには、「up」と「down」の2種類があります。

実行済みのファイルは「up」と表示されるため、修正するためにロールバックする必要があります。

適用されていないときは、「down」と表示され、そのまま修正や削除が可能です。

 

おすすめ書籍

プログラミング未経験の方向け

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

スラスラ読める Rubyふりがなプログラミング

 

プログラミング初心者向け

Ruby on Rails 6 超入門

たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!