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図