💫

Ruby on Rails タスク管理アプリを作成しよう

2023/02/15に公開

このセクションの目標

タスク管理アプリ(TODO管理アプリ)の制作を通して、、

  • CRUDアプリケーション開発の基礎を学習
  • アプリ開発の流れを体験

CRUDとは

  • Create...作成
  • Read...表示
  • Update...更新
  • Delete...削除

ウェブアプリケーションの大半は、
この4つの機能の組み合わせで成り立っている。

ストーリー

ユーザーが

  • タスクを作成できる
  • タスクを編集できる
  • タスクを完了済みにできる
  • タスクを未完了にできる
  • タスクを削除できる

プロジェクトの作成をしよう

Cloud9を開きrails_projectsフォルダに移動

cd ~/environment/rails_projects/

👇
このフォルダにtodoという名前のプロジェクトを作る

rails _7.0.0_ new todo

railsのバージョンが異なるとカリキュラム通りに進められなくなる可能性があるため
railsのバージョンを明示的に指定している!
👇
プロジェクトの作成が完了!!
lsで一覧を表示すると
todoディレクトリが出来ている!
👇
todoに移動し、lsで一覧を表示すると
railsのプロジェクトのファイル文が作成されている!

学習環境なのでホストのホワイトリストを削除しておく
ファイルエクスプローラーから
todo

config

enviromentsの
development.rbファイルを開く

endの上に記述

config.hosts.clear

ファイルを保存
👇
railsサーバーを起動

rails s

👇
Preview画面でrailsのウェルカムページが表示されればOK!!

^+Cキーで終了

コントローラーを作成しよう

タスクを管理するために利用するTasksコントローラーを作成していく

rails g controller Tasks

関連するファイルが作成された

重要なところとしては、
app→controllers→tasks_controller.rb
ファイルが出来ている!

モデルを作成しよう

todo管理機能を実現するためのモデルを作成していく

rails g model Task tittle:string completed:boolean

rails g model Taskでタスクという名前のモデルを作成しなさいという意味
その次に必要なデータベースのカラムをスペース区切りで必要なだけ定義する

Taskは単数形であることに注意!!

tittleはタスクの名前を保持するカラムでstring型を指定している
completedはタスク完了についてtrueまたはfalseを保持するカラム
データはboolean型で真偽値を管理するためのデータ型

👇
関連するファイルが作成された

特に重要なところとしては
appのmodelsの中にtask.rbファイルが作成された!!
データ操作関連の処理を書くファイル

もう一つ重要なところとしては、
db配下のmigrateの中にマイグレートファイルが出来ている!
データベースのテーブル定義がrubyで記述されている🙆🏻‍♀️

マイグレーションファイルを編集しよう

db配下のmigrateの中にマイグレートファイルを編集する!
数字+create_tasks.rb

データベースのテーブル構造の変更に関する操作を
rubyで行うためのプログラムが書かれている

class CreateTasks < ActiveRecord::Migration[7.0]
  def change
    create_table :tasks do |t|
      t.string :tittle
      t.boolean :completed

      t.timestamps
    end
  end
end

万が一スペルミスに気がついた場合は、今の段階であれば修正可能!

create_table :tasksでタスクスというテーブルを作成するという意味
その下にrails g modelで指定したカラムと、
timestampsメソッドが自動で生成されている

timestampsはデータの新規作成日時と更新日時を記録するカラムである
created_atとupdated_atを追加するためのメソッド

マイグレーションファイルを編集する
👇
completedのデフォルト値をfalseにする設定

default: false

後ろにを追加する
初期状態ではタスクは未完了の状態となる

👇
作成したdbスキーマをデータベースに反映する

データベースにおけるスキーマとは、「データベースの構造を表現する設計図」となり、三層スキーマアーキテクチャと呼ばれる構造で定義されます。

作成するデーブルの構造(tasks)

👇

rails db:migrate

dbスキーマが正しく反映されたか確認

rails db

データベースコマンドラインツールを起動

db = dbconsoleの略

👇
sqlite>と出てくるので
.schema
と入力すると、データベースの構造を確認することができる
👇
create table tasksの行に注目!

CREATE TABLE IF NOT EXISTS "tasks" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "tittle" varchar, "completed" boolean DEFAULT 0, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);

SQLの授業ではないので一字一句理解する必要はない🙆🏻‍♀️

重要なところだけ説明

  • idカラムは自動生成されたカラムで行番号が自動で入る
  • integerの部分はデータ型を示していて整数型のこと
  • tittle,completedが指定したカラム
    tittleはvarchar型(文字列型)、completedはboolean型で真偽値を扱える
  • created_atとupdated_atはデータの作成日時と更新日時を
    railsが自動的に記録するときに使われるカラム
  • datetime型は日時を扱うことができるデータ型

"tittle" varcharについて補足
マイグレーションファイルではstring型を指定しているのに、
実際には、varchar型となっている

データ型の名前はデータベースマネジメントシステムごとに異なることがある!
例えば、SQLite、MySQL、PostgreSQL、SQLServer
それぞれで名前が違う場合がある

rails側でデータベースマネジメントシステムごとの仕様の差異を吸収して
よきにはからって自動で適切なデータ型を設定してくれている!

👇
終了するには
.exit


今日はハローワークに行って、専門実践教育訓練給付金の手続きをしてきた!
ジョブカードの作成にちょっと時間がかかったのと、
親知らず抜きに行って痛すぎて勉強あんま進まんかった〜汗
今週もあと2日出勤頑張ろう。

Discussion