すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

RailsにおけるRESTful開発の基礎

この記事で出来るようになること

はじめに

概要

この記事では、Ruby on Railsを利用したWebアプリケーション開発の初歩を学びます。具体的には、Webブラウザを通じてデータを操作するための基本的な概念と、Railsでのデータ操作の設計手法に焦点を当てます。RESTfulな設計の基礎、ルーティングの設定、およびモデルとコントローラーの連携方法について、段階的に学んでいきます。

目標

この章の目標
  • Webブラウザを通じたデータ操作の基本を理解する。
  • RailsでRESTfulな設計の基礎を学ぶ。
  • ルーティング、モデル、コントローラの基本的な連携方法を理解する。

必要な前提条件・事前準備

これまでデータベース操作を集中して学習してきたため、employee_managementアプリケーションでの画面操作は久しぶりの機会となります。そのため、「Webの基本からRailsでのページ作成まで学ぼう」を復習しておくことで、本章をより深く理解できるでしょう。

必要なもの・知識

1.Webブラウザを介したCRUD操作の重要性

Railsでの開発について、これまで学んできた内容を振り返ってみましょう。

Ruby on Railsは、アプリケーションをモデル(データの処理)、ビュー(ユーザーインターフェース)、コントローラー(処理の流れ制御)の3つの要素に分ける「MVCアーキテクチャ」を採用しています。この仕組みは、アプリケーションの各要素が特定の役割を担い、効率的に連携するよう設計されています。

以下は、MVCアーキテクチャにおけるリクエストからレスポンスまでの全体の流れです。

データベースとのやり取りは、主にモデルが担当します。Railsでは、モデル内で特定のクラスを定義することで、Active Recordという機能を利用できます。これにより、データベース操作をより効率的かつ直感的に行うことが可能になるということを学んできましたね。

ActiveRecordを利用することで、データベースのレコードをRubyのオブジェクトとして扱えます。これにより、CRUD操作をRubyのコードを通じて簡単に実行できるようになります。

CRUDは、データベースのレコードに対する基本的な四つの操作(作成、読み取り、更新、削除)を指します。Railsでは、これらの操作はActiveRecordを介してモデルクラスを通じて行われます。CRUD操作とそれに対応するActiveRecordのメソッドは、以下の表の通りです。

CRUD 説明 ActiveRecordのメソッド
Create データベースのテーブルに新しいレコードを追加する create, new + save
Read テーブル内の既存のレコードを検索し、取得する all, find, find_by, where
Update テーブル内の特定のレコードを検索し、その内容を変更する update
Delete テーブルから特定のレコードを削除する destroy, destroy_all

例えば、UserモデルクラスのインスタンスにActiveRecordのsaveメソッドを適用することで、テーブルに新しいデータを挿入することができます。

これまでの学習内容では、主にモデルとデータベース間でのCRUD操作を学んできました。

しかし、実際のアプリケーション利用時には、ユーザーがWebブラウザ上の画面を通じてデータの登録、更新、削除などの操作を行うのが一般的です。このため、ユーザーがデータ操作を行えるように画面の作成と処理が必要です。これらの画面を提供することで、ユーザーは直接データベースにアクセスすることなく、必要なデータ操作を行えるようになります。

Railsでは、ユーザーがフォームやボタンを使用してデータを操作できる画面を簡単に作成することができます。これらの画面の作成は、MVCアーキテクチャに沿って行われます。加えて、Railsは「REST」と呼ばれる特定の設計思想を採用しており、これに従ってアプリケーションを設計することで、より効率的でわかりやすい実装が可能になります。

実装に入る前に、RailsにおけるRESTの基礎を学習しましょう。

ポイント
  1. アプリケーションでは、一般的にユーザーがデータ操作を行えるように画面の作成と処理が必要である
  2. Railsでは、画面の作成は、MVCアーキテクチャに沿って行われる
  3. 上記に加えて、Railsでは「REST」と呼ばれる設計の考え方を採用している

2.RailsにおけるRESTの基礎

Railsでは、設計の基本的な考え方として「REST(Representational State Transfer)」が採用されています。RESTは、Web上の情報や機能を「リソース」として捉え、リソースを中心に物事を考える「リソース指向アーキテクチャ」をベースにした一連の設計原則です。

ぴっかちゃん

いろんな新しい用語が出てきて、理解できるか少し不安だなぁ...。

心配しないで、ぴっかちゃん。今からRESTに関連する用語を一つずつ確認していくよ。最終的には、RailsでのRESTの全体像がクリアになるはずだからね。

ぴかわかさん

リソース指向アーキテクチャとは

リソース指向アーキテクチャ(Resource Oriented Architecture、略してROA)とは、Webサービスにおいて、基本的なデータや情報を「リソース」として中心に据えるアーキテクチャのことです。

リソースとは、簡単に言うとWeb上に存在する情報や機能のことを指します。Railsでは、処理の対象となる共通点を持つ情報の集まり、例えばデータベースの「テーブル」をリソースとして捉えるのが一般的です。

そして、すべてのリソースは、URI(Uniform Resource Identifier)によって一意に名付けられます。このURIは、Web上のリソースを特定する文字列であり、リソースの「名前」と「アドレス(住所)」の両方を表しています。URIを見ることで、どのリソースが参照されるかを判断できるようになります。

例えば、Railsアプリケーションにおいて、/employeesというURIがあるとします。このURIを見るだけで、employeesというリソース、つまりデータベース内のemployeesテーブルに関連していることが分かります。

リソースの名前

同様に、/employees/1というURIを見れば、employeesテーブルのid1の特定のレコードを参照していることが明らかになります。このようにURIがリソースを一意に識別することを可能にしています。

また、リソースは「情報の集合」として表現されます。そのため、リソースを識別するURIは「名詞の複数形」を使います。例えば、従業員の情報全体を示すURIは/getEmployeeではなく、/employeesとなります。

RailsでのRESTはリソース指向アーキテクチャをベースにしているんだ。これは、データベースのテーブルや情報の集まりを「リソース」として捉え、それぞれに一意なURIを割り当てて識別する方法だよ。

ぴかわかさん
ポイント
  1. Railsにおけるリソースは、「処理の対象となる共通点を持つ情報の集まり」を指し、通常はデータベースの「テーブル」をリソースとして捉える
  2. 各リソースに一意なURIを割り当てることで、そのリソースを識別する
  3. URIは、リソースの「名前」と「アドレス(住所)」の両方を表す

RESTの概念

REST(Representational State Transfer)はリソース指向アーキテクチャをベースとしており、リソースに対する操作方法(読み取り、作成、更新、削除など)を定めています。これらの操作は、HTTPメソッド(GET、POST、PUT、DELETE)を利用して行います。

以下は、RESTにおけるCRUD操作と対応するHTTPメソッドの一覧です。

CRUD操作 HTTPメソッド 説明
Create (作成) POST リソースに新しいデータを追加する
Read(読み取り) GET リソースからデータを取得する
Update(更新) PUT / PATCH 既存のリソースを更新する
Delete(削除) DELETE リソースを削除する

重要な点は、URIがリソースを一意に識別し、HTTPメソッドがリソースに対して行う「操作」を指定することです。クライアント側は、これらのHTTPメソッドを使用してリソースにアクセスし、操作を行います。

例えば、/employeesというURIはemployeesテーブルに関連するリソースを表し、CRUD操作は対応するHTTPメソッド(GETで読み取り、POSTで作成、PUTで更新、DELETEで削除)によって行われます。

GETメソッドを使用する例では、以下のように/employeesのURIでemployeesリソースを指定し、HTTPメソッドのGETを使用してemployeesテーブルから全てのレコードを取得します。

POSTメソッドを使用する例では、以下のようにPOST /employeesというリクエストによりemployeesテーブルに新しいレコードを作成します。

このように、HTTPメソッドを使用してリソースに対する具体的な操作を指定することができます。employeesリソースに対する他の操作例は、次の通りです。

Webブラウザからのリクエストは、ルーティングを経由します。そのリクエストに応じて、コントローラを司令塔とするMVCでリソースの処理が行われます。

データベースのリソースは、以下のようにモデルの「ActiveRecord」を介してオブジェクトとして扱われ、アプリケーション内でのデータ操作が可能になります。

Railsでは、各リソースの処理はモデル-ビュー-コントローラ(MVC)アーキテクチャに従って設計されています。具体的には、特定のURIに対するリクエストが発生すると、Railsはそれに関連するMVCコンポーネントを動作させます。

/employeesというURIへのリクエストがある場合、次の箇所で処理が行われます。

リソース毎の処理をMVCで構成

Railsでは、REST原則に従ってWebアプリケーションを設計し、開発することが推奨されています。これにより、Web上の情報や機能を整理し、使いやすくすることができます。

ぴっかちゃん

設計ってそんな大事なの?

設計に従わないと、めちゃくちゃなコードになってしまう恐れがあるんだ。初学者のうちはこの設計に沿ってコードを書いていくようにしよう。

ぴかわかさん
ポイント

RailsのRESTは、リソース指向アーキテクチャを採用しており、各リソース(データベースのテーブルに相当する情報の集まり)に対して一意なURIを割り当て、HTTPメソッド(GET, POST, PUT, DELETE)を使用してそのリソースを操作する。

3.RESTfulルーティングとCRUD操作

前セクションでは、REST原則について学びました。これは、データベースのテーブルなど、共通の特徴を持つ情報の集まりを「リソース」として捉え、それぞれのリソースを一意のURIとHTTPメソッドを用いて特定し操作するという方法です。このようなREST原則に基づく設計を「RESTful」と呼びます。

このセクションでは、Ruby on Railsを使用して、このRESTfulなアプローチに沿ったルーティング(RESTfulルーティング)とCRUD操作の具体的な実装方法を学んでいきます。

ルーティング設計

以前、ルーティングの設定はconfig/routes.rbファイルで行うことを学びましたね。このファイルは、Railsアプリケーションでの各リクエストがどのコントローラとアクションにルーティングされるかを定義する場所です。

config/routes.rb | ルーティングの基本構文
1
2
3
Rails.application.routes.draw do
HTTPリクエストメソッド 'パス', to: 'コントローラ名#アクション名'
end
config/routes.rb | 例
1
2
3
Rails.application.routes.draw do
get 'articles', to: 'articles#index'
end

Railsではルーティングを設定する際の原則として、RESTfulなアプローチ(RESTfulルーティング)に沿った設計が基本とされています。RESTfulルーティングでは、Webアプリケーション内の各リソースに対して、適切なHTTPメソッドと一貫性のあるURLパターンを使用します。

以下の表は、RESTfulルーティングにおける一連の標準的な操作とそのURLパターンです。

リソースに対する操作と目的 HTTPメソッドとURLパターン
Index: リソースの一覧を表示 GET /{リソース名}
Show: 特定のリソースの詳細を表示 GET /{リソース名}/:id
New: 新しいリソースを作成するためのフォームを表示 GET /{リソース名}/new
Create: 新しいリソースの作成 POST /{リソース名}
Edit: 既存のリソースを編集するためのフォームを表示 GET /{リソース名}/:id/edit
Update: 既存リソースの更新 PATCH /{リソース名}/:id
Destroy: 特定のリソースの削除 DELETE /{リソース名}/:id

これらのRESTfulルーティングの標準パターンを特定のリソースに適用する場合、config/routes.rbファイルで以下のように設定します。

config/routes.rb | RESTfulルーティングの標準的なルートパターン
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rails.application.routes.draw do
  # Index: リソースの一覧を表示
  get '{リソース名}', to: '{リソース名}#index'

  # New: 新しいリソースを作成するためのフォームを表示
  get '{リソース名}/new', to: '{リソース名}#new'

  # Create: 新しいリソースを作成
  post '{リソース名}', to: '{リソース名}#create'

  # Show: 特定のリソースの詳細を表示
  get '{リソース名}/:id', to: '{リソース名}#show'

  # Edit: 既存のリソースを編集するためのフォームを表示
  get '{リソース名}/:id/edit', to: '{リソース名}#edit'

  # Update: 既存のリソースを更新
  patch '{リソース名}/:id', to: '{リソース名}#update'

  # Destroy: 特定のリソースを削除
  delete '{リソース名}/:id', to: '{リソース名}#destroy'
end

ここで使われる{リソース名}は、実際のリソース名に置き換えるためのプレースホルダーです。このプレースホルダーを具体的なリソース名に変更することで、そのリソースに適用されるRESTfulルーティングのルールが定義されます。

例えば「articles」というリソースに対するルーティング設定は、以下のようになります。

config/routes.rb | 例:articlesリソースの場合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rails.application.routes.draw do
  # Index: 記事の一覧を表示
  get 'articles', to: 'articles#index'

  # New: 新しい記事を作成するためのフォームを表示
  get 'articles/new', to: 'articles#new'

  # Create: 新しい記事を作成
  post 'articles', to: 'articles#create'

  # Show: 特定の記事の詳細を表示
  get 'articles/:id', to: 'articles#show'

  # Edit: 既存の記事を編集するためのフォームを表示
  get 'articles/:id/edit', to: 'articles#edit'

  # Update: 既存の記事を更新
  patch 'articles/:id', to: 'articles#update'

  # Destroy: 特定の記事を削除
  delete 'articles/:id', to: 'articles#destroy'
end

RESTfulルーティングでは、特定のリソースを操作するためのHTTPメソッドとURLパターンが定まっており、これは他のリソースにも同様に適用されます。

たとえば、先程のarticlesリソースの例に代わり、employeesという異なるリソースが存在する場合でも、同じルーティングパターンが適用されます。ここでの違いは、リソース名の部分がarticlesからemployeesに変わるだけです。

config/routes.rb | 例:employeesリソースの場合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rails.application.routes.draw do
  # Index: 社員の一覧を表示
  get 'employees', to: 'employees#index'

  # New: 新しい社員を追加するためのフォームを表示
  get 'employees/new', to: 'employees#new'

  # Create: 新しい社員を追加
  post 'employees', to: 'employees#create'

  # Show: 特定の社員の詳細を表示
  get 'employees/:id', to: 'employees#show'

  # Edit: 既存の社員を編集するためのフォームを表示
  get 'employees/:id/edit', to: 'employees#edit'

  # Update: 既存の社員の情報を更新
  patch 'employees/:id', to: 'employees#update'

  # Destroy: 特定の社員を削除
  delete 'employees/:id', to: 'employees#destroy'
end

先程のGET /articlesarticlesリソースの一覧を表示するためのルートでしたが、GET /employeesemployeesという別のリソースの一覧を表示するためのルートになります。

このようにRESTfulルーティングでは、リソースの種類に関わらず同じパターンのURL構造が用いられます。この一貫性は、各リソースへのアクセスや操作方法を明確にし、開発者やユーザーが各リソースに対する適切なアクセス方法を簡単に理解し、把握するのを助けます。

RESTfulルーティングの大きなメリットは、URLパターンの一貫性と直感的な構造であり、どのリソースに対する操作がどのHTTPメソッドとURLパターンに対応しているかを簡単に理解できます。

ぴかわかさん
ポイント
  1. Railsではルーティングを設定する際、RESTfulルーティングに沿った設計が基本になる
  2. RESTfulルーティングでは、Webアプリケーション内の各リソースに対して、適切なHTTPメソッドと一貫性のあるURLパターンを使用する

resourcesメソッド

Railsが提供するresourcesメソッドを使用すると、RESTfulルーティングに必要な標準的なルートが自動的に生成され、ルーティングの設定が簡素化されます。

resourcesメソッドを使用する場合
1
2
3
Rails.application.routes.draw do
resources :リソース名
end

例えば、employeesリソースに対するルーティングを設定する場合、以下のように定義します。

config/routes.rb | 例:employeesリソースの場合
1
2
3
Rails.application.routes.draw do
resources :employees
end

このresources :employeesの記述は、以下に示される各種ルート定義とほぼ同様です。

config/routes.rb | 例:employeesリソースの場合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rails.application.routes.draw do
  # Index: 社員の一覧を表示
  get 'employees', to: 'employees#index'

  # New: 新しい社員を追加するためのフォームを表示
  get 'employees/new', to: 'employees#new'

  # Create: 新しい社員を追加
  post 'employees', to: 'employees#create'

  # Show: 特定の社員の詳細を表示
  get 'employees/:id', to: 'employees#show'

  # Edit: 既存の社員を編集するためのフォームを表示
  get 'employees/:id/edit', to: 'employees#edit'

  # Update: 既存の社員の情報を更新
  patch 'employees/:id', to: 'employees#update'

  # Destroy: 特定の社員を削除
  delete 'employees/:id', to: 'employees#destroy'
end

このようにresourcesメソッドを使うことで、ルーティングの設定が大幅に簡単になり、コードの重複を避けることができます。この章では、RESTfulルーティングの学習のためにあえてresourcesメソッドは使用しません。

「employees」リソースのルーティングを設定しよう

config/routes.rbファイルを開き、employeesリソースに対して、resourcesメソッドを使用せずにRESTfulルーティングを設定してみましょう。コメントアウトの記述は任意です。

config/routes.rb | ルーティングを設定する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Rails.application.routes.draw do
  # Index: 社員の一覧を表示
get 'employees', to: 'employees#index'
# New: 新しい社員を追加するためのフォームを表示
get 'employees/new', to: 'employees#new'
# Create: 新しい社員を追加
post 'employees', to: 'employees#create'
# Show: 特定の社員の詳細を表示
get 'employees/:id', to: 'employees#show'
# Edit: 既存の社員を編集するためのフォームを表示
get 'employees/:id/edit', to: 'employees#edit'
# Update: 既存の社員の情報を更新
patch 'employees/:id', to: 'employees#update'
# Destroy: 特定の社員を削除
delete 'employees/:id', to: 'employees#destroy'
end

現段階では、RESTfulルーティングの学習のためにresourcesメソッドは使用しません。

ぴかわかさん

7つの標準的な操作

RESTfulルーティングを使用する際、通常は1つのリソースに対して7つの標準的な操作が設定されます。これらの操作は以下の通りです。

  1. Index:リソースの一覧を表示します。
  2. Show:特定のリソースの詳細を表示します。
  3. New:新しいリソースを作成するためのフォームを表示します。
  4. Create:新しいリソースを作成します。
  5. Edit:既存のリソースを編集するためのフォームを表示します。
  6. Update:既存のリソースを更新します。
  7. Destroy:特定のリソースを削除します。

上記の各操作(Index、Show、New、Create、Edit、Update、Destroy)は、RESTfulルーティングの設定に従って、以下のようにコントローラ内の対応する同名のアクション(index、show、new、create、edit、update、destroy)に割り当てられます。

コントローラのアクションは、リクエストを処理するメソッドです。RESTfulルーティングでは、リソースごとに異なるコントローラが使用されますが、各コントローラ内で7つの標準的な操作を実装するアクションの名前と目的は一貫しています。

操作 コントローラ#アクション名 目的
Index {リソース名}#index リソースの一覧を表示する
Show {リソース名}#show 特定のリソースの詳細を表示する
New {リソース名}#new 新しいリソースを作成するためのフォームを表示する
Create {リソース名}#create 新しいリソースを作成する
Edit {リソース名}#edit 既存のリソースを編集するためのフォームを表示する
Update {リソース名}#update 既存のリソースを更新する
Destroy {リソース名}#destroy 特定のリソースを削除する

例えば、employeesリソースについて考えてみましょう。

リソースは「処理の対象となる共通点を持つ情報の集まり」であり、通常、データベースのテーブルに相当します。ここでは、employeesリソースがemployeesテーブル(社員情報の集まり)を指しています。

employeesリソースに対するリクエストをRESTfulルーティングで設定する場合、以下のコードのようになります。

config/routes.rb | 例:employeesリソースの場合
1
2
3
4
5
6
7
8
9
10
11
12
Rails.application.routes.draw do
  get 'employees', to: 'employees#index'
  get 'employees/new', to: 'employees#new'
  post 'employees', to: 'employees#create'
  get 'employees/:id', to: 'employees#show'
  get 'employees/:id/edit', to: 'employees#edit'
  patch 'employees/:id', to: 'employees#update'
  delete 'employees/:id', to: 'employees#destroy'

  # または以下のように簡潔に設定
  resources :employees
end

この設定により、employeesリソースに関連する7つの標準的な操作が一つのコントローラ(employeesコントローラ)内の対応するアクションに割り当てられます。

以下の表では、先程の表と比べてコントローラの名称やリソース部分は異なりますが、コントローラ内で実装される7つの標準的な操作のアクション名と目的は同じですね。

操作 コントローラ#アクション名 目的
Index employees#index 社員の一覧を表示
Show employees#show 特定の社員の詳細情報を表示
New employees#new 新しい社員の追加用フォームを表示
Create employees#create 新しい社員を登録
Edit employees#edit 既存の社員情報の編集用フォームを表示
Update employees#update 既存の社員情報を更新
Destroy employees#destroy 特定の社員を削除
employeesコントローラのアクションを定義しよう

employeesコントローラでは、employeesリソースに対するリクエストを処理するメソッド(アクション)を以下のように定義します。employees_controller.rbファイルを開き、アクションを定義してみましょう。コメントアウトの記述は任意です。

app/controllers/employees_controller.rb | コントローラのアクションを定義する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class EmployeesController < ApplicationController
def index
# 社員の一覧を取得する処理
end
def show
# 特定の社員の詳細情報を取得する処理
end
def new
# 新しい社員の登録フォームを表示する処理
end
def create
# 新しい社員を登録する処理
end
def edit
# 既存の社員情報を編集するためのフォームを表示する処理
end
def update
# 既存の社員情報を更新する処理
end
def destroy
# 特定の社員を削除する処理
end
end
ポイント
  1. RailsのRESTfulルーティングでは、各リソース(例えば、employeesテーブル)に対して、7つの操作(Index, Show, New, Create, Edit, Update, Destroy)があり、それぞれが特定のHTTPメソッドと一貫性のあるURLパターンに対応している
  2. 上記の各操作は、コントローラ内の対応する同名のアクションに割り当てられる

モデルとコントローラの連携

Railsのモデルとコントローラは密接に連携して動作します。コントローラのアクションには、モデルを通じてデータベースとのやり取りを実装します。

モデルはデータベースのテーブルに対応しており、ActiveRecordを使用してデータベース操作を効率的かつ簡潔に行うことが可能です。

コントローラのアクションでは、これらのモデルを利用して具体的なデータ操作などを実装します。

たとえば、employeesコントローラのindexアクションでは、Employeeモデルにallメソッドを使用して社員の一覧を取得し、@employeesインスタンス変数に代入してビューに渡すことができます。

1
2
3
4
5
6
class EmployeesController < ApplicationController
  def index
    # 社員の一覧を取得する処理
@employees = Employee.all
end end

ActiveRecordによるCRUD操作の基礎」で学んだように、allメソッドはモデルに対応するテーブルのすべてのレコードを取得するメソッドです。上記の例では、Employeeモデルに対応するemployeesテーブルの全レコードを取得し、それを@employeesに代入しています。

また、コントローラのアクション内で設定したインスタンス変数は、ビューファイル内で直接利用できることも学びました。したがって、employeesテーブルのすべてのレコードの情報が格納された @employeesは、該当するアクションに対応するビューファイルで使用することが可能です。

ぴっかちゃん

この前は、コンソール上でActiveRecordのメソッドを使ってデータ操作を学んだけど、実際にはコントローラのアクションに定義して、インスタンス変数にセットすることでビューにデータを渡せるんだね!

このようなアクションの実装(モデルとの連携)は、次の章から手を動かしながら学習するよ!その前に、CRUD処理の実装手順を確認しておこう。

ぴかわかさん

4.CRUD処理を実装する基本手順

RailsでRESTfulなCRUDアプリケーションを作成する際の基本手順を確認しましょう。実際のコーディングは次の章から始めますが、先に大まかな流れを理解しておきます。

CRUD処理の実装における基本的なステップは、以下の通りです。

CRUD処理の実装における基本的なステップ
  1. モデルの作成:データ操作の基本単位となるモデルを作成します。
  2. データベースのマイグレーション:rails db:migrateコマンドを実行して、モデルに対応するデータベースのテーブルを作成します。
  3. ルーティングの設定:config/routes.rbファイルで、CRUD操作に必要なルート(URLパターンとそれに対応するコントローラのアクション)を設定します。
  4. コントローラの作成と設定:コントローラ内にCRUDに対応するアクション(メソッド)を定義します。
  5. ビューの作成:各アクションに対応するビューを作成します。
  6. アクションの実装(モデルとの連携):コントローラのアクション内で、モデル(ActiveRecord)を介してデータベースとのやり取りを実装します。

各CRUD操作の実装には、特に手順3から手順6までのステップを繰り返します。この章では、学習目的のため、先にルーティングの設定(手順3)とコントローラの作成と設定(手順4)は設定済みです。

次の章からは、手順3と手順4を振り返った後に、ビューの作成(手順5)に進みます。

さいごに

ここでは、Webブラウザを介してデータを操作するための基礎知識と、Railsでのデータ操作の設計方法について学びました。実際のコーディングに進む前に、これらの概念と手順をしっかりと理解することが重要です。次のセクションでは、これらの基本に基づき、実際にコードを書いて、具体的なデータ操作を行っていきます。この学習を通じて、Railsを使ったWebアプリケーションの基本をしっかりと身につけましょう。

この章をもう一度学習したい方のみ、以下のようにファイルのコードを変更前に戻してから取り組んでみてください。

ルーティングの設定を戻しましょう

config/routes.rbファイルを開き、変更前の状態に戻しましょう。

config/routes.rb | 変更前
1
2
3
Rails.application.routes.draw do
  get '/employees', to: 'employees#index'
end
コントローラの設定を戻しましょう
app/controllers/employees_controller.rb | 変更前
1
2
3
4
5
class EmployeesController < ApplicationController
  def index
    @text = 'indexアクションが実行されました'
  end
end

この記事のまとめ

  • Railsにおけるリソースは、「処理の対象となる共通点を持つ情報の集まり」を指し、通常はデータベースの「テーブル」をリソースとして捉える
  • 各リソースに一意なURIを割り当てることで、そのリソースを識別する
  • URIは、リソースの「名前」と「アドレス(住所)」の両方を表す