はじめに
初学者のアウトプット記事です。
今回の内容は
就職活動中で作ったポートフォリオ(ミニアプリ)の説明です。
ご指摘アドバイス等ありましたらよろしくお願いします。
ポートフォリオ
開発環境
ruby 2.5.1
rails 5.2.3
本番環境 AWS/S3
DB:Mysql5.6
URL
- ログイン用テストユーザー
- email: testtaro@test
- password: 123456
主な機能
■deviseを用いたユーザー管理機能
□ ユーザー新規登録
□ ユーザーログイン・ログアウト
■記事管理機能
□記事投稿(写真、タイトル、記事文章、カテゴリ、日時、ユーザー名)
□記事編集(更新、削除)
□記事詳細
□カテゴリ毎に投稿を一覧表示
□ログインユーザーの投稿一覧表示
■その他
□投稿記事への非同期通信イイね機能。
□font-awesome
□ページネーション(kaminari)
□フッター部分にTwitter・Facebook・LINEのシェアボタン
□capistranoを用いてAWSに自動デプロイ
□画像の保存先をS3に指定
概要
主におもちゃに特化した写真記事を投稿しユーザ同士共有して閲覧できるアプリです。
何ができるのか
・おもちゃに関する記事投稿(写真、タイトル、記事文章、カテゴリ、日時、ユーザー名)ができます。
・記事一覧表示(カテゴリ毎、ログインしてるユーザの投稿一覧)し、写真をクリックすると詳細画面にアクセスできます。
・記事詳細画面から編集画面に進み削除、内容の更新ができます。
更新
削除
・Twitter,Facebook,LINEでシェアできるシェアボタン
DB設計
productsテーブル
Column | Type | Options |
---|---|---|
name | text | null: false, unique:true |
description | text | null: false |
like_count | integer | |
category_id | integer | |
user_id | integer |
Association
- belongs_to :category
- belongs_to :user
- has_many :likes, dependent: :destroy
- has_many :images, dependent: :destroy
usersテーブル
Column | Type | Options |
---|---|---|
name | text | null: false, unique:true |
e_mail | text | null: false , unique:true |
password | text | null :false |
Association
- has_many :products, dependent: :destroy
- has_many :likes, dependent: :destroy
likesテーブル
Column | Type | Options |
---|---|---|
user_id | reference | foreign_key: true |
group_id | reference | foreign_key: true |
Association
- belongs_to :product, counter_cache: :likes_count
- belongs_to :user
categoriesテーブル
Column | Type | Options |
---|---|---|
name | string | null: false |
Association
- has_many :products
今回の作成をしてみて
必要な機能を洗い出しDB設計して各機能を実装しました。
実装している段階でエラーが発生しbiding.pryやrails cをよく使用し仮説検証をしました。
今回特にAWSへのデプロイでのエラーが多く、本番環境のlogを確認してどこで何が起きているのかを考え分からない部分は検索しながら解決していきました。
特に今回ハマった部分の記事です。
Rails本番環境(AWS)S3に画像投稿できなかった
今回の作成を通して自分の中ではlogをしっかり確認するのが大事だということの学びが大きかったです。
課題
□記事に対するコメント機能実装(非同期通信)
□rspecでモデルのバリデーションテストは書けたが、コントローラーのテストは書けてない。
□レスポンシブ化(スマホ対応していない)