概要
第1段階でユーザーの取り扱い全般を実装したが、第2段階ではコンテンツの投稿に関する機能を実装していく。
ここでは以下を含む。
- プロフィールや新規投稿などユーザーに応じたページの表示と操作
- CDNによるアイコンの導入
- データベースへのカラムの追加
- リレーションを持ったテーブル構造の操作
- 画像のアップロードなどを含む。
要件
画面遷移
サインイン中の画面遷移を対象とする。
/top
画面で- ユーザーの投稿記事(名前、コメント、画面、日付)を表示(上限数付き)
- メニューの「プロフィール」からユーザーごとの
/profile
画面へ - メニューの「ユーザー設定」からユーザーごとの/edit画面へ
- メニューの「投稿する」から
/post
画面へ
/profile
画面で- ユーザーの名前、画像、コメントを表示
- コメントの投稿と画像のアップロードが可能(いずれか一方でも可)
- ヘッダーメニューのロゴあるいは「トップ画面」から
/top
画面へ
- /edit画面で
- プロフィール画像、プロフィールコメントを選択・編集
- ボタンを押してプロフィールの内容を変更し、/profile画面へ遷移
/post
画面で- コメントの投稿と画像のアップロードが可能(いずれか一方でも可)
- 記事投稿後、ヘッダーメニューのロゴあるいは「トップ画面」から
/top
画面へ
データベース
テーブル
登録ユーザーテーブル:users
user
テーブルは、プロフィールに表示する以下の項目について新たにカラムに追加。
- プロフィール画像のファイル名
- コメントテキスト
カラム名 | 型(SQL) | 型(Rails) | 内容 |
id | BIGINT(AI) | Rails生成 | |
name | VARCHAR(255) | string | ユーザー名 |
VARCHAR(255) | string | メールアドレス | |
pasword | VARCHAR(255) | string | パスワード |
image_file_name | VARCHAR(255) | string | プロフィール画像ファイル名 |
comment | TEXT | text | プロフィールコメント |
created_at | DATETIME | Rails生成 | |
updated_at | DATETIME | Rails生成 |
投稿記事テーブル:posts
posts
テーブルは、Railsが設定する項目以外に以下の項目を持つ。
- 投稿ユーザーの
id
(users.id
を参照) - 投稿記事のメッセージを保存する。なお画像のみの投稿も認めるため、
comment
はNULL
を許容する。
カラム名 | 型(SQL) | 型(Rails) | 内容 |
id | BIGINT(AI) | Rails生成 | |
user_id | BIGINT | references | usersテーブルのid |
message | TEXT | text | メッセージ本文 |
created_at | DATETIME | Rails生成 | |
updated_at | DATETIME | Rails生成 |
投稿画像テーブル:post_images
post_images
テーブルは、Railsが設定する項目以外に以下の項目を持つ。
- 投稿記事の
id
(posts.id
を参照) - 画像ファイルのファイル名
カラム名 | 型(SQL) | 型(Rails) | 内容 |
id | BIGINT(AI) | Rails生成 | |
post_id | BIGINT | references | postsテーブルのid |
file_name | VARCHAR(255) | string | 画像ファイル名 |
created_at | DATETIME | Rails生成 | |
updated_at | DATETIME | Rails生成 |
リレーション
テーブル間の関係は以下のとおり。
user
は0以上複数のpost
を持つpost
は必ず1つのuser
に属するpost
は0以上複数のpost_image
を持つpost_images
は必ず1つのpost
に属する
検討
コントローラーとアクション
/profile/:id -> users#show
- ユーザーごとのプロフィールを表示する
- プロフィールの内容はプロフィール画像とコメント
users#edit, users#update
- ユーザーごとのプロフィールを編集する
- 編集内容は、画像の登録/差し替え、コメントの記入/変更
posts_controller.rb
- 投稿記事を取り扱うコントローラー
- 投稿記事の新規登録、編集、削除
- 投稿記事は1つのメッセージと0~複数の画像からなる
- メッセージがあれば画像はなくてもよく、画像があればメッセージは空でもよい
ビュー
users
users/profile.html.erb
:ユーザーのプロフィールページusers/edit.html.erb
:ユーザー設定ページposts/new.html.erb
:新規投稿ページposts/edit.html.erb
:投稿内容編集ページ
スタイルファイル
プロフィールページやユーザー設定ページのスタイル定義を追加。
- users.css
投稿関係ページのスタイルは以下のファイルに新規に作成
- posts.css
実装手順
プロフィール
- 仮のプロフィールページを作成する
→ユーザーに応じた表示 - アイコンを導入する
- ユーザー属性を追加する
→データベースのカラムの追加 - ユーザー設定の枠組み
- プロフィールコメントの編集機能を実装する
- プロフィール画像のアップロード機能を実装する
記事投稿