TECH EXPERT 18日目 Railsによる チャットアプリ開発  ①要件定義 ②データベース設計

ChatAppを開発  全体像の把握


以下の順で実装

 

1. 要件定義

2. DB設計

キーワード:中間テーブル

3. アプリケーションの雛形の作成

キーワード:GitHub アプリケーションの状態が管理

4. フロント画面の実装

チャット画面のみフロントの実装

5. サーバーサイドの実装
ユーザー管理機能 → チャットルーム管理機能 → メッセージ投稿機能の順に実装

6. サーバーサイドのRspecテスト

キーワード:Rspec

 

 

1.要件定義

機能

ユーザー管理機能(新規登録・ログイン・ログアウト機能)
チャットルーム管理機能(チャットルームの新規作成・削除機能)
メッセージ管理機能(テキスト投稿・画像投稿機能)

usersテーブル           { ユーザーの名前 ユーザーのEmail ユーザーのパスワード
roomsテーブル       { チャットルーム名
messagesテーブル {    テキストの内容 画像の情報 メッセージ投稿時刻
メッセージ投稿をしたチャットルーム メッセージ投稿をしたユーザー

 

 

ページ

サインイン/ログインページ


トップページ{リンク

チャット新規作成ページへ遷移できるリンクが存在する
ユーザー編集ページへ遷移できるリンクが存在する
指定のチャットルームへ遷移できるリンクが存在する
                         {表示

ログイン中のユーザーの名前が表示されている
ログイン中のユーザーがチャットルームを作成していれば、チャット名が表示される


ユーザー編集ページ

 

チャットルーム新規作成ページ{表示

プルダウンの中に、DBに保存されているユーザー名が表示されている
チャット名を記入するフォームが表示されている
チャットルームを作成するボタンが表示されている


チャット一覧,投稿ページ{リンク

チャット新規作成ページへ遷移できるリンクが存在する
ユーザー編集ページへ遷移できるリンクが存在する
指定のチャットルームへ遷移できるリンクが存在する
現在いるチャットルームを終了(チャットのデータを削除する)リンクが存在する
                                              {表示

ログイン中のユーザーの名前が表示されている
ログイン中のユーザーがチャットルームを作成していれば、チャット名が表示される
メッセージや画像を投稿するフォームが表示されている
投稿したメッセージや画像が表示されている
投稿した日時が表示されている
投稿したユーザーが表示されている

 

 

 

 

2. DB設計

キーワード:中間テーブル

 

チャットルームとユーザーのエンティティ 関係

多対多 なのでアソシエーション組めず↓

解:中間テーブルを使う

= group -- group_user -- userのように2つのテーブルの間を繋ぐ。

 

group_userが持つのは 両方のテーブルのデータ(レコード横列でもつ)

 中間テーブルは双方のidの組み合わせテーブルということ。

 

メソ has_many :モデル, through   #〜を経由する
has_manyのthroughオプションは、モデルに多対多の関連を定義する。

 

ER図