ham-cap / flip-phrases

MIT License
0 stars 0 forks source link

リソース設計 #23

Open ham-cap opened 2 weeks ago

ham-cap commented 1 week ago

Ver.3

Method Path Description
GET / 未ログイン用のトップページを表示
GET /auth/google_oauth2/callback Google認証によるログイン
GET /log_out ログアウト
GET /cards フラッシュカードの一覧(ログイン後のトップページ)
GET /cards/new フラッシュカードの新規作成画面を表示
POST /cards フラッシュカードの新規作成
GET /cards/:id フラッシュカードの詳細画面を表示
GET /cards/:id/edit フラッシュカードの編集画面を表示
PATCH /cards/:id フラッシュカードの更新
DELETE /cards/:id フラッシュカードの削除
GET /cards/review 復習モード画面を表示(2ページ目以降のカードでは/cards/review?id=2のようにクエリストリングでidを指定する)
DELETE /users/:id 退会処理
GET /terms 利用規約を表示
GET /privacy プライバシーポリシーを表示
Ver.2 Method | Path | Description -- | -- | -- GET | / | 未ログイン用のトップページを表示 GET | /auth/google_oauth2/callback | Google認証によるログイン GET | /log_out | ログアウト GET | /cards | フラッシュカードの一覧(ログイン後のトップページ) GET | /cards/new | フラッシュカードの新規作成画面を表示 POST | /cards | フラッシュカードの新規作成 GET | /cards/:id | フラッシュカードの詳細画面を表示 GET | /cards/:id/edit | フラッシュカードの編集画面を表示 PATCH | /cards/:id | フラッシュカードの更新 DELETE | /cards/:id | フラッシュカードの削除 GET | /cards/review | 復習モード画面を表示 DELETE | /users/:id | 退会処理 GET | /terms | 利用規約を表示 GET | /privacy | プライバシーポリシーを表示
Ver.1 Method | Path | Description -- | -- | -- GET | / | 未ログイン用のトップページを表示 GET | /auth/google_oauth2/callback | Google認証によるログイン GET | /log_out | ログアウト GET | /cards | フラッシュカードの一覧(ログイン後のトップページ) GET | /cards/new | フラッシュカードの新規作成画面を表示 POST | /cards | フラッシュカードの新規作成 GET | /cards/:id | フラッシュカードの詳細画面を表示 GET | /cards/:id/edit | フラッシュカードの編集画面を表示 PATCH | /cards/:id | フラッシュカードの更新 DELETE | /cards/:id | フラッシュカードの削除 GET | /cards/drill | 復習モード画面を表示 DELETE | /retirement | 退会処理 GET | /terms | 利用規約を表示 GET | /privacy | プライバシーポリシーを表示
yoshitsugu commented 1 week ago
ham-cap commented 6 days ago

@yoshitsugu

以上を踏まえて退会処理と復習モードのパスを修正し、最初のコメントに追記してみましたのでご確認をお願いいたします🙏

yoshitsugu commented 5 days ago
ham-cap commented 5 days ago

@yoshitsugu

ログアウトが sessions#destroy になるならPathも DELETE /sessions とか DELETE /user/sessions とかのほうが直感的かなと思いました。

たしかにわざわざ名前付きにしなくともそれで十分わかりやすいかもしれないですね👀 Railsガイドやチュートリアルなどでsessions#destroyへのパスとしてlogoutといった名称をつけているのを見たことがあったのでマネてみたのですが、実際の業務ではあまり一般的ではないのでしょうか?🤔

「機能として同じだからといってまとめてしまう」というDRYの誤用になっていないか

まさにその状態のような気がします🤔 たしかに詳細と復習では本質的に異なるものですね。 改めて考えてみたところ、GET /cards/reviewcards#reviewへ行くのはそのままで、復習モード用のビューとしてreview.html.erbを用意して表示させるというのが一番素直かなと思うのですがいかがでしょうか?👀 一瞬GET /reviewでもいいのかなとも考えましたが、扱うリソースはあくまでもcardsで、showとは見せ方が違うというだけなので、以下のような形でcardsの中にreviewを生やしてあげるのがいいのではないかと考えました。

  resources :cards do
    get "review", on: :collection
  end
yoshitsugu commented 4 days ago

Railsガイドやチュートリアルなどでsessions#destroyへのパスとしてlogoutといった名称をつけているのを見たことがあったのでマネてみたのですが、実際の業務ではあまり一般的ではないのでしょうか?🤔

これは僕の書き方が悪かったですね。pathとcontrollerとの対応としては /sessions がはいっているほうが直感的ですが、特に logout でも悪くはないです。修正するかはお任せします。

改めて考えてみたところ、GET /cards/reviewでcards#reviewへ行くのはそのままで、復習モード用のビューとしてreview.html.erbを用意して表示させるというのが一番素直かなと思うのですがいかがでしょうか?👀

よいと思います :+1: この場合、2ページ目以降はどこに card_id をいれる想定ですか?クエリストリングにするならDescriptionに書いたほうがいいかなと思いますし、 pathに含めるなら別途そのpathも表に加えたほうがよいかなと思いました。どちらの方法でもこの場合はよいかなと思いますので、おまかせします。

ham-cap commented 4 days ago

@yoshitsugu

pathとcontrollerとの対応としては /sessions がはいっているほうが直感的ですが、特に logout でも悪くはないです。修正するかはお任せします。

理解しました👍 改めて考えてみたのですが、今回はlogoutとさせていただけると嬉しいです🙌

2ページ目以降はどこに card_id をいれる想定ですか?

現時点では/cards/review?id=2のような形でクエリストリングとして入れる想定なので、その旨Descriptionに追記しました🙌

yoshitsugu commented 3 days ago

よいと思います :+1: