Open ham-cap opened 2 weeks ago
DELETE /user
) などのほうがよいかなと思います。review
や revisit
などのようです。そちらを踏まえた上で、できるだけRESTに沿ったPathにするとRailsとしても作りやすいかなと思います。@yoshitsugu
ログアウトについてはsessions#destroy
にてセッションの削除をする予定で、パスは分かりやすいようにlog_out
としたいと思っています。
deviseは使用しない予定なのですが、よく考えると退会処理については普通にユーザーの削除なので仰るとおりDELETET user/:id
にしたいと思います。変に難しく考えてしまいました💧
復習モードにおけるカードの切り替えについての説明ができておらずすみません🙇♂️。
まず前提として復習モードの画面は大部分が詳細画面と共通なので、詳細画面のビューを流用することを考えております。復習モードの時だけコントローラー(cads#show
)にて前後のカードを取得し、それぞれに遷移できるリンクを表示させるイメージです。コントローラーでの復習モードか否かの判定はクエリパラメータを使用します。
流れとしては、まず/cards/drill
にアクセスがあるとcards#drill
で復習の起点となるカードを取得し、そのカードの詳細ページ(/cards/:id
)へdrill=true
のようなパラメータを持たせたうえでリダイレクトします。リダイレクト先のcards#show
ではdrill
パラメータがtrue
の場合のみ、起点となるカードの前後のカードを取得してshowテンプレートの下部に前後のカードへ移動できるリンクを設置し、そのリンクでカードの切り替えを行う、という流れを考えています。
したがって、/cards/drill
は復習モードへの入り口で、復習モード中のパスは各カードの詳細画面(/cards/:id)にdrill=true
が付与されたものになります。
事前に考えていた別案として、復習モードへ移行するボタンが押された時だけパラメータを付けてGET /cards/:id
へ遷移するというのもあったのですが、復習モードへは一覧画面上部のボタンかメニューモーダルから遷移することを想定しているため、特定のカードのidを指定して遷移する/cards/:id
を無理やり使うよりは別のルーティングを用意するほうがいいと考えました。
また、今後もし詳細画面に復習モードボタンを設置して、そのカードから復習を始められるようにしたいと思った時にもcards#drill
の実装だけ変えれば対応できるようにしておきたいという意図もあります。
review
がいいのかdrill
なのかpractice
なのかという感じで、自分としては割と悩んでいる部分だったのですが、言われてみると変にこだわらずにreview
ぐらいのほうがシンプルで良さそうなので、そうすることにします。以上を踏まえて退会処理と復習モードのパスを修正し、最初のコメントに追記してみましたのでご確認をお願いいたします🙏
sessions#destroy
になるならPathも DELETE /sessions
とか DELETE /user/sessions
とかのほうが直感的かなと思いました。/cards/drill
はエントリポイントとなるだけで、実際は /cards/:id` が使われる、ということですね。理解しました。
@yoshitsugu
ログアウトが sessions#destroy になるならPathも DELETE /sessions とか DELETE /user/sessions とかのほうが直感的かなと思いました。
たしかにわざわざ名前付きにしなくともそれで十分わかりやすいかもしれないですね👀
Railsガイドやチュートリアルなどでsessions#destroy
へのパスとしてlogout
といった名称をつけているのを見たことがあったのでマネてみたのですが、実際の業務ではあまり一般的ではないのでしょうか?🤔
「機能として同じだからといってまとめてしまう」というDRYの誤用になっていないか
まさにその状態のような気がします🤔
たしかに詳細と復習では本質的に異なるものですね。
改めて考えてみたところ、GET /cards/review
でcards#review
へ行くのはそのままで、復習モード用のビューとしてreview.html.erb
を用意して表示させるというのが一番素直かなと思うのですがいかがでしょうか?👀
一瞬GET /review
でもいいのかなとも考えましたが、扱うリソースはあくまでもcards
で、show
とは見せ方が違うというだけなので、以下のような形でcards
の中にreview
を生やしてあげるのがいいのではないかと考えました。
resources :cards do
get "review", on: :collection
end
Railsガイドやチュートリアルなどでsessions#destroyへのパスとしてlogoutといった名称をつけているのを見たことがあったのでマネてみたのですが、実際の業務ではあまり一般的ではないのでしょうか?🤔
これは僕の書き方が悪かったですね。pathとcontrollerとの対応としては /sessions
がはいっているほうが直感的ですが、特に logout
でも悪くはないです。修正するかはお任せします。
改めて考えてみたところ、GET /cards/reviewでcards#reviewへ行くのはそのままで、復習モード用のビューとしてreview.html.erbを用意して表示させるというのが一番素直かなと思うのですがいかがでしょうか?👀
よいと思います :+1:
この場合、2ページ目以降はどこに card_id
をいれる想定ですか?クエリストリングにするならDescriptionに書いたほうがいいかなと思いますし、 pathに含めるなら別途そのpathも表に加えたほうがよいかなと思いました。どちらの方法でもこの場合はよいかなと思いますので、おまかせします。
@yoshitsugu
pathとcontrollerとの対応としては /sessions がはいっているほうが直感的ですが、特に logout でも悪くはないです。修正するかはお任せします。
理解しました👍
改めて考えてみたのですが、今回はlogout
とさせていただけると嬉しいです🙌
2ページ目以降はどこに card_id をいれる想定ですか?
現時点では/cards/review?id=2
のような形でクエリストリングとして入れる想定なので、その旨Descriptionに追記しました🙌
よいと思います :+1:
Ver.3
/cards/review?id=2
のようにクエリストリングでidを指定する)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 | プライバシーポリシーを表示