Coder Social home page Coder Social logo

ukarimi's People

Contributors

dependabot[bot] avatar yutokashiwagi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

uda-titor

ukarimi's Issues

コントローラのコードを改善

脆弱性のあるコードを改善する

関連付けをしているならば、answersなどの用意されたメソッドを使用する

https://github.com/YutoKashiwagi/Questin_box/blob/dev/app/controllers/answers_controller.rb#L4

ユーザーに紐づくものはユーザーから取得するように変更する

https://github.com/YutoKashiwagi/Questin_box/blob/dev/app/controllers/questions_controller.rb#L26
https://github.com/YutoKashiwagi/Questin_box/blob/dev/app/controllers/questions_controller.rb#L36
https://github.com/YutoKashiwagi/Questin_box/blob/dev/app/controllers/answers_controller.rb#L30

@answer = Answer.find(params[:id])
このように書くと誰でもいじれてしまうので、
@answer = current_user.answers.find(params[:id])
このようにユーザーから取得する

ユーザーコントローラ

https://github.com/YutoKashiwagi/Questin_box/blob/dev/app/controllers/users_controller.rb#L3

この場合、ID指定で別のユーザーの名前が取得できることになる
マイページ用に別のコントローラを作り、パラメータでユーザIDを使用せず、current_userを使用する

N+1対策

bulletを導入して、N+1が発生している箇所をしっかり直す
#92

デプロイ後のフィードバック

実際に使ってもらっての意見まとめ

デザイン面

  • ユーザー、カテゴリーフォローボタンがフォロー後、フォロー前で色が同じなのでわかりにくい
    • フォロー後、緑に変える形で対応済み
  • 検索機能が何を検索するものなのかわかりにくい。質問を検索と明示しておくべき
    • 対応済み
  • ヘッダーがごちゃごちゃし過ぎている
    • 登録系はプルダウンを使ってまとめる
      • 対応済み
    • 投稿、質問の作成はモバイル版のTwitterみたいに固定レイアウトのボタンからできるようにすると良いかも
      • 対応済み
  • 投稿という名前がそもそも何をすべきかわかりにくい
    いっそ呟きとかにした方がいいかも
    • 対応済み
  • せっかくbootstrapを使っているし、メインターゲット層が学生なんだからレスポンシブは対応すべき
    • 大仕事になりそうなので別にissueを立てた

機能面

  • ユーザーがカテゴリーをフォローする意味合いが薄い。フォローしたところで今のところ特にメリットはない
    • フォロー中のカテゴリーの質問、つぶやきを表示するフィードを実装して対応済み
  • 質問、投稿一覧ページでただ一覧が表示されるだけでなく、フォローしているカテゴリー別の一覧とかにすると良いかも
    • フィードを実装して対応済み
  • 質問、回答に画像も投稿できると便利かも
  • リダイレクト先について
    • フレンドリーフォワーディングを追加する
      • 対応済み
    • ユーザー編集後にrootに飛ばされるのはおかしい
      • 対応済み

コード面

  • comments_controllerがparamsのuser_idからユーザーを取っている
    • paramsからuser_idを取るべきではない
      • 対応済み
  • 全体的にDBにnot null制約が貼られていない
    • 対応済み
  • ソートはcreate_atではなくidで行うべき
    • 対応済み
  • rails側でid系のvalidateを貼り忘れている
    • 対応済み

その他

  • デモデータが少なくて機能がわかりにくい。質問数や投稿数をもっと増やしておくべき

エラー報告

  • 投稿、質問のnewページでバリデーション失敗後、送信ボタンが消える
    • 対応済み
  • ページネーションでエラー画面が表示される
    • 対応済み

ベストアンサー機能

質問に対してただ一つのベストアンサー機能をつける

要件

  • 質問投稿者のみが決められる
  • 知恵袋を参考に、一度ベストアンサーを決めたら変更できない仕様にしてみる。確認ダイアログ とか付けておきたい

テスト項目

  • 正常に動くこと
  • 質問者しかベストアンサーを指定出来ないこと
  • ベストアンサーがただ一つに指定されていること

update, destroy機能の追加

  • 質問、回答機能にupdate, destroy機能をつけ忘れていた
    • update, destroy機能をつけ、model, featureスペックのテストも書く

非同期ページネーション

ページネーションを非同期でできるようにする

特にpost, questionのindexページなど複数のタブを使用している部分は非同期にしないとかなり不便

ランキング機能の追加

回答者のランキング機能を追加する

今後

どういったランキングを作るのが適切なのかいまいちわからないので、とりあえず現状は質問数と回答数のランキングのみ

今後需要に合わせてランキングを追加していきたい

回答機能

  • answerモデルは作成済み
    • ビュー側で回答機能を実装する
    • feature specでのテストを書く

validatesし忘れ

各モデルのuser_id等にバリデーションを施していなかったので、全体的に施す

いいね機能

質問、回答に対していいね機能を付ける
ベストアンサーはその質問に対しての最適解となるが、いいね機能であればその質問のベストアンサーとならなくても、似たような状況になってその質問にたどり着いた人の参考になったということがわかる

コメントにいいねをする必要はなさそうだから、
ポリモーフィックを使って回答と質問にいいねできるようにする

readme整備

readmeを整備する

  • 動機を明確に
  • readmeだけで大体の情報が一発でわかるように
  • 読み手に負担を書けない

投稿周りの設計見直し

投稿周りのルーティング、ページ設計等が色々と問題が多いので大幅に変更する

  • ルーティング
    • そもそもuser namespace内でpostを定義する必要がない
  • indexページ内にフォームが設置してあったり、indexページで表示する部分が現在のユーザーの物だったり。ユーザー毎の投稿はユーザーページで確認できるので、ここは素直にみんなの投稿か、 フィードでいいかも

ベストアンサー機能

questionモデルに解決済みかどうかを0, 1で判定するためのsolvedカラムを追加

Why

検索時やソート時に解決済み、未解決の判定を容易にするため

不具合修正

  • questions#showページで、質問と回答のidが同じ場合、どちらかにいいねを押すとどちらもいいねされてしまう

    • 原因
      • いいねのクラス名の問題なので、likable.nameとlikable.idの二つを取ってクラス名に一意性を保証すれば良さそう
  • 質問、コメントのタブ部分をクリックすると、両方のフォームが出てきてしまう

  • questionモデルのcontentの型がstringになってしまっていること

    • textに変更する

コード改善

以前書いたコードの中で、直したい部分

コントローラのflashについて

flash[:xxx] = 'xxx'
redirect_to xxx_path

と二行で書かれてる部分と、

redirect_to xxx_path, flash: { xxx: 'xxx' }

と一行で書かれてる部分があり、統一されてないのでどちらかに統一したい

rspecについて

以前書いたコードの中で無駄にデータを作ってたりする部分がいくつかあるので、直したい

ベストアンサーのテーブル設計を変更

現状はquestionモデルのカラムの中にベストアンサーを入れる形だが、これではユーザー側でベストアンサー数を集計するのが大変

中間テーブルを作る形に変更したい

request_spec作成

controller, request specを初期に自動生成オフにしてから今までその存在を忘れてたので、今更既存のコントローラのテストを追加

コントローラの抜けや処理の甘い部分、余計なルーティングもついでに直した

テストを書いたことでコントローラに対する理解が深まり、非常に良い勉強になった。
今度からは初めからしっかり書くべし

仕上げ

  • デモデータ作成
    サイトの使用方法がわかるような、具体的なデモデータを作成する
    知恵袋とかから引っ張ってくる?

  • full_titleメソッド追加

  • 表示がダサい部分を直す

レスポンシブ対応

  • メインターゲット層が学生
  • bootstrapを使っている

こんな理由から、レスポンシブ対応はやるべき

タグ機能

質問やユーザーにタグを付けられるようにする

要件

  • タグを導入して質問を検索できる
  • タグを利用してカテゴリー別に質問を管理できる
  • タグ毎にユーザーを検索できる

SNSログイン

twitter, google, FBログインあたりまでやりたい

コメント機能

現在は質問に対するレスポンスが回答しかないので、他の手段として回答と質問に紐づいたコメントモデルを作成する

ポリモーフィック使えばいけそう

デザイン

サイトのデザインを良くしたい

  • タブ

  • 通知画面

    • 既読の通知は残す。
    • 未読の通知は色を変えるか、new!みたいなわかりやすい文言をいれる
  • フォーム画面

    • デフォルトのものではなく、モダンな感じにする
  • カテゴリー選択部分

    • ちょっとダサすぎるのでなんとかしたい

解決済み機能

ベストアンサーに選ばれた段階で解決済みとし、質問一覧画面、質問個別画面で解決済みかどうかわかるようにする

systemスペックへの移行

system_specの導入

ローカル環境では問題なく動くけど、CircleCIが落ちる
もう少し機能付けたらこの問題と向き合う

利用規約の追加

ユーザー登録時に利用規約を表示し、規約に同意しなければ登録できない仕様にする

フォロー機能実装

ユーザー同士のフォロー機能をつける

一般的なSNSではないのでフォローを使うメリットを考えなければならない

通知機能との紐付けぐらいかな?

ストック機能

Qiitaを参考に、質問のストック機能を導入したい

ストックはajaxで行う

質問個別ページがスレッドのようになってるので、そのリンクをため込む感じで行けそう

質問一覧ページの個々の質問を表示するパーシャルを作って、それを使いまわして表示したい
一覧の状態から、解決済みかどうかをわかるようにする

要件

  • ログイン済みユーザーは質問をストック出来る
  • ストックした記事は解除できる
  • ストック一覧ページ
    • 他人も閲覧できる
    • ストック一覧へのリンクは、ヘッダーとプロフィールページに貼る
    • 一覧ページにはストックされているかどうか確認できるようにする

通知機能

なんらかのアクションがあったとき、通知される機能が欲しい
機能数が多くなってしまったため、どんな時に通知されるか、それが本当に必要なものであるのか厳選しておきたい

  • フォローされた時
  • 回答が来た時
  • コメントがついたとき
  • ベストアンサーに決定された時
  • ストックされた時

細かいUI/UX改善

  • ユーザーページのフォロー中のタグの下に、何もタグをフォローしていない場合はまだカテゴリーをフォローしていません的な文言を加える。text-muted、link_toでカテゴリーページへのリンクにしておくといいかも?

  • question, answerのいいね数の表示が縦になってしまっているので、横並びに直す

  • テキスト表示部分をスマートにする
    simple_format() メソッドを使って改行を有効化し、表示部分を整える

メール認証の実施

サインアップ時にメール認証を行う
就活中は採用担当者さんの手間になるので実装しない

ユーザー情報追加

ユーザー情報をもっと追加する

  • プロフィール写真
  • プロフィール
  • 住所
  • 年齢
  • 文理

など

UIを整える

現状デザインにほとんど手を付けてないので、多少なりともマシなデザインにしたい
期間を決めてしっかり作る
今週中はフロントしかいじらないぐらいの勢いでやる

不具合

  • ユーザー画面の回答した質問のところで、同じ質問に複数回回答していると、その回数だけ同じ質問が表示されている

    • 原因: distinctを使ってない
      • 修正済み
  • 投稿ページのユーザー写真が本人のがログインしている場合でないと表示されない

    • 原因: ビューでのif文の範囲がおかしい
      • 修正済み

アプリ名変更

question_boxからukarimiへアプリ名を完全に変更する

railsのgemでそういうものがあったはず

サイトのネーミング問題

今現在は大学受験質問箱(仮)だけど、もっとキャッチーなものに変えたい

ネーミング要件

  • **とかはどうでもいいから、サイトの主旨が直感的にわかるようなもの
  • 短くてわかりやすいもの
  • ひらがな4文字ぐらいか、簡単な英単語が理想

わかりみ + 受かる => 「うかりみ」

コミュニティ機能を作る

科目や参考書ごとにユーザーが自由にコミュニティを作れる機能が欲しい

科目、参考書、志望校ごとにコミュニティを作れたら便利そう

LP作成

LPを作る
LPを見るだけで使用方法が直感的にわかるような感じが理想

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.