プラクティスの模範解答欄を作成
Issue
概要
現状、プラクティス修了者向けに、参考となる提出物リンクをプラクティスページに貼り付けています。 例えば「lsコマンドを作る5」だと以下のようにメンターの提出物を紹介しています。
一方でプラクティスを修了すると、プラクティスページに戻る機会が少なく、参考となる提出物リンクに気づかないことが多々あります。 そのため、「模範解答はあるか?」といった問い合わせがよく来てしまうので、今回の機能によって模範解答(参考提出物)があることが一目でわかるようにしました。
変更確認方法
事前準備
-
feature/add_model_answer_of_practiceをローカルに取り込む -
./bin/setupおよびrails db:seedを行う(他のブランチでDBをいじっていたらrails db:resetも行ってください) -
foreman start -f Procfile.devでサーバ起動
受講生としてログイン
- ユーザー名:
kimuraでログイン - プラクティス:「OS X Mountain Lionをクリーンインストールする」にアクセス(
http://localhost:3000/practices/315059988#learning-Status) - プラクティスステータスが修了していることを確認
- [ ] 「模範解答」タブが存在すること
- [ ] 「模範解答」タブを押すと、模範解答ページに遷移すること
- [ ] 模範解答内容、『description...』が表示されていること
- プラクティスステータスを、「未着手」に変更する
- 「模範解答」タブをクリックし、模範解答ページにアクセスする
- [ ] 模範解答ページにアクセスができないこと
- [ ] プラクティスページに戻され、「プラクティスを修了するまで模範解答は見れません。」のアラートが出ること
- 手順2.でアクセスしたプラクティス以外の、任意のプラクティスにアクセスする
- [ ] 「模範解答」タブが存在しないこと
メンターとしてログイン
- ユーザー名:
komagataでログイン - メンター用のプラクティス一覧ページにアクセス(
http://localhost:3000/mentor/practices) - 任意のプラクティスの、模範解答カラムの「+アイコン」ボタンを押す
- [ ] 模範解答新規作成ページに遷移すること
- 新規作成ページで内容を任意入力し、「登録する」ボタンを押す
- [ ] 登録に成功すると模範解答詳細ページに遷移し、入力した内容で模範解答作成が出来ていること
- 再度メンター用のプラクティス一覧ページ(
http://localhost:3000/mentor/practices)にアクセスする
- [ ] 模範解答を作成したプラクティスの、模範解答カラムが「ペンアイコン」ボタンになっていること
- [ ] 「ペンアイコン」ボタンを押すと、模範解答の編集ページに飛ぶこと
- 編集ページで内容を任意編集し、「更新する」ボタンを押す
- [ ] 更新に成功すると模範解答詳細ページに遷移し、編集した内容で模範解答更新が出来ていること
- 模範解答の詳細ページにある管理者・メンター用メニューの「編集」ボタンを押す
- [ ] 模範解答の編集ページに飛ぶこと
Screenshot
プラクティスページ
模範解答ページ
メンター用プラクティス一覧ページ
@nakamu-kazu222 お疲れ様です! レビューをお願いしたいのですがご都合いかがでしょうか? お手数ですがご返事頂けますと幸いです~!
@masyuko0222
お疲れ様です!
別の方からもレビュー依頼をいただいておりまして、立て込んでおりますので、 申し訳ないのですが、他の方への依頼をお願いしてもよろしいでしょうか?😭
また機会がありましたら、よろしくお願い致します。
@reckyy お疲れ様です! レビューをお願いしたいのですがご都合いかがでしょうか? お手数ですがご返事頂けますと幸いです~!
@masyuko0222 お疲れ様です〜。 承知しました、一週間以内にはレビューさせていただきます。(もしお急ぎでしたら、他の方にお願いします!) よろしくお願いいたします 🙇
レビューする過程で、再現手順がバグを含んでいることに気づいたので一応こちらに残しておきます。
- https://github.com/fjordllc/bootcamp/issues/7959
@reckyy ありがとうございます~! コメント返信いたしました。
はじめの質問についてはこちらで返します↓
メンターで模範解答を編集、閲覧する際、一旦編集画面に行ってから保存してshow画面にいく動線に少し違和感を感じたのですが、Issueで議論されていた以下の欄は無くなったのでしょうか?
結論としてはIssueで議論されていた欄はなくなり、MTGでの会話の結果、現在の画面となりました。 会話を記述できてなくて恐縮ですが、最新の画面仕様は以下でまとめています。 https://github.com/fjordllc/bootcamp/issues/7785#issuecomment-2160710350
閲覧については管理者用のプラクティス一覧からではなく、プラクティスの詳細画面から模範解答タブをクリックして閲覧していただければと思います(受講生と同じ動線)。 メンター以上ですと、上記で遷移した模範解答の詳細画面から編集画面への遷移も可能です。
答えになっているでしょうか?
現状全てのプラクティスに模範解答を作成できますが、そちらは正しい仕様でしょうか?提出物がないプラクティスは、生徒側で模範回答のタブがないのでどういった用途なのか気になりました。
こちらも問題はないと思っていますが明示的に議論はしていないので相談してみます。 YAGNIで行っていて、町田さんや駒形さんから「提出物があるときのみ模範解答を作れるように」と指摘を受けた場合に拡張しようと思っています。 あまり深く考えていなかったのでこのタイミングで仕様改めて聞かせていただきます!
@komagata @machida CC: @reckyy お疲れ様です。 メンバーレビューを通じて、何点か仕様について確認したい箇所が出てきました。お手数ですがご回答いただければです。
1. すべてのプラクティスに模範解答が作れるのは良いか?
今回はsubimission_answerという命名にしていますが、提出物がないプラクティスにも模範解答が作られるようになっています。
一方で提出物がないのに、模範解答がある場合は以下の画像のように模範解答タブがdisabledになっていてクリックできないようになっています。
ご要望があればそもそも提出物がないプラクティスは、模範解答を作れないようにする、といった実装もできるのですがいかがでしょうか?
2. 模範解答削除機能はいらないか?
現状模範解答は、destroy機能を持たせていません。理由としてはPracticeモデルやそれに付随するモデルたちがdestroyを持っていないためです。
destroy機能はあった方がよろしいでしょうか?
3. PracticeにSubmissionAnswerIdの外部キーをもたせるべきか?
今回、「Practice 1-1 SubmissionAnswer」の関連であるため、Practice側にSubmissionAnswerIdという外部キー、SubmissionAnswer側にもPracticeIdという外部キーをもたせています。
一方でメンバーの方から以下のご指摘を頂きました。 https://github.com/fjordllc/bootcamp/pull/7942#discussion_r1677761484
基本的に一対一の関係なら、一方のモデルに外部キーを追加するだけでいいという認識だったので、今回Practiceにも外部キーが追加されており、気になった次第です
関連付け=外部キーと思ってしまっていたのですが、1対1の場合は、外部キーをつけるのは片方だけのほうが複雑にならずよかったりするでしょうか?(今回ならSubmissionAnswerにPracticeIdという外部キーをもたせるだけにする)
@masyuko0222 修正、返信ありがとうございます! 委細承知しました〜。 また修正が確定したタイミングで、お声がけいただければと思います。☺️
@masyuko0222 質問ありがとうございます! 1と2については僕から回答させていただきます。
- すべてのプラクティスに模範解答が作れるのは良いか?
作れるでOKです。ただし、模範解答が空の場合はタブは非表示にしてください(提出物の合格前、合格後共に)。提出物が不要な場合は模範解答は空になる場合がほとんどになります。
- 模範解答削除機能はいらないか?
なくて大丈夫です。もし不要になったら(そのような状況はそうは起こらないと思いますが)、手動で空にして保存する、という対応にしたいと思います。
@masyuko0222
- PracticeにSubmissionAnswerIdの外部キーをもたせるべきか?
NOです。
下記に理由をコメントさせていただきました〜。
https://github.com/fjordllc/bootcamp/pull/7942#discussion_r1680954698
@komagata ありがとうございました〜!
@reckyy 修正完了しましたので、よろしくお願いいたします! 改めて回答定まっていなかった箇所をまとめておきます。
-
すべてのプラクティスに模範解答が作れるのは良いか
- 現状問題ありません。
- 現状問題ありません。
-
DELETE機能は不要か
- 現状不要です。とりあえず直接DBを叩いて削除するなどで対応する予定です。
- 現状不要です。とりあえず直接DBを叩いて削除するなどで対応する予定です。
-
PracticeモデルにSubmissionAnswerIdの外部キー必要か
- 僕が勘違いしていて、不要でした。以下コミットで削除しています。
- 5dd97a8eb57a5bc1e0cc7a893577b3ed8a1ba0ae
その他のご指摘については、すでにご覧いただいているかと思いますが、各コメントスレッドで返信済みです。
@reckyy ご丁寧に見ていただきありがとうございました~! ご指摘点はすべて修正しました。スレッドで修正したコミットを返信の形で貼り付けていますmm
コメント確認(もし修正するなら修正したのち)komagataさんにレビュー依頼していただいて差し支えありません。
改めてレビュー頂くのもお手数なレベルの修正でしたので、お言葉に甘えてApproveいただきます⭕ ありがとうございました~!
@komagata お疲れ様です。 メンバーからApproveを頂きましたので、レビューのほどよろしくお願いいたします。