Ruby on Rails タスク管理アプリを作成しよう
このセクションの目標
タスク管理アプリ(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