Coder Social home page Coder Social logo

taskmate's Issues

ユーザーモデル作成、ログイン機能を導入する

  • ユーザモデルを作成する

  • 最初のユーザをseedで作成する

  • ユーザとタスクを紐づける

  • ユーザのアドレスにユニーク制約を貼る

  • 関連(アソシエーションで使用するid)に対してインデックスを貼る

  • ログイン画面を実装しましょう

  • ログインしていないのにタスクのページに飛ぼうとした場合は、ログインページに遷移させましょう

  • 自分が作成したタスクだけを表示するようにしましょう

  • ログアウト機能を実装しましょう

  • 今回は、ユーザーの登録(new)画面と、詳細・マイページ(show)画面のみを作成しましょう

  • ユーザ登録(create)をした時、同時にログインもさせるようにしましょう

  • ログインしている時は、ユーザー登録画面(new画面)に行かせないように、コントローラで制御しましょう

  • 自分(current_user)以外のユーザのマイページ(userのshow画面)に行かせないように、コントローラで制御しましょう

  • これらの内容を加味して、テストを加筆修正しましょう(user.spec.rbのファイルを新規作成し、そのFeatureSpecを書きましょう)

E2Eテスト(フィーチャスペック)を書く

  • 「タスク一覧画面に遷移したら、作成済みのタスクが表示される」ことをテストする

  • 「タスク登録画面で、必要項目を入力してcreateボタンを押したらデータが保存される」ことをテストする

  • 「任意のタスク詳細画面に遷移したら、該当タスクの内容が表示されたページに遷移する」ことをテストする

ユーザーの管理画面を実装する

  • 画面上に管理メニューを追加しましょう

  • 管理画面にはかならず /admin というURLを先頭につけるようにしましょう
    routes.rb に追加する前に、あらかじめURLやルーティング名( *_path となる名前)を想定して設計してみましょう

  • 管理画面でユーザ一覧・作成・更新・削除ができるようにしましょう(管理画面のビューはパーシャル化しなくて構いません)

  • ユーザを削除したら、そのユーザが抱えているタスクを削除するようにしてみましょう

  • ユーザの一覧画面で、ユーザが持っているタスクの数を表示するようにしてみましょう。その際、N+1問題を回避するための仕組みを取り入れましょう

  • ユーザが作成したタスクの一覧を詳細画面で見られるようにしてみましょう

  • 今回の実装のFeature Specを書きましょう(今回は一覧・作成・詳細・更新・削除のテストを全て書いてみましょう)

バリデーションを設定する

  • モデルにバリデーションを設定するコードを記述

  • マイグレーションファイルを作成し、DBにも制約を設定

  • モデルのテストを実施

ユーザーにロールを追加、エラーページの設定

  • 管理ユーザだけがユーザ管理画面にアクセスできるようにしてみましょう

  • 一般ユーザが管理画面にアクセスした場合、専用の例外(エラー)を出してみましょう

  • 例外を補足して、適切にエラーページを表示しましょう(ステップ23で実施しても構いません)

  • ユーザ管理画面でロールの付与と削除ができるようにしましょう

  • 管理ユーザが1人もいなくならないように削除の制御をしましょう

  • Railsが用意しているデフォルトのエラーページを自分が作った画面にしてみましょう

  • 状況に応じて、適切にエラーページを設定しましょう

  • ステータスコードの404ページと500ページの2種類の設定は必須とします。それ以外は+α要件として、つけてみたい方は実装してみてください。

Taskの終了期限を追加する

  • tasksテーブルに終了期限のカラムを追加

  • 一覧画面で、終了期限でソート出来るようにする

  • 追加した機能のテストをfeature specで追記する

タスクにラベルをつけられるようにする

  • タスクに複数のラベルをつけられるようにしてみましょう(ラベルはseedなどのマスタデータで作成する・管理する形でも構いませんし、管理画面などから作成できる形でも構いません)

  • 作成ができたら、Taskの詳細画面で、そのTaskに紐づいているLabel一覧を出力しましょう

  • つけたラベルで検索できるようにしてみましょう(ラベルは一つだけを選択して、そのラベルがついているタスクを検索するという形で構いません)

  • 今回の実装のFeature Specを書きましょう

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.