bootcamp
bootcamp copied to clipboard
[アンケート機能]アンケートを作成できるようにしたい
#4472 でアンケートで使う質問を登録する機能が作られています。 このIssueでは、質問をまとめたものを作る、というのをお願いしたいです。
アンケートは surveys
でお願いします。
アンケートが持つデータ
- タイトル
- 例: 2023年04月のアンケート
- 質問
- #4472 で作った質問を複数個持つことができる
- 作成者
- 作成日時
- 更新者
- 更新日時
- 回答期限日時
- WIP or 公開
アクセス権限
index、new、edit は 管理者、メンターだけがアクセスできる。 アンケートフォームは全てのユーザーがアクセスできる。
アンケート一覧
surveys
の index

アンケート作成・編集
surveys
の new, edit

アンケート個別(アンケートフォーム)
変更になりました。 https://github.com/fjordllc/bootcamp/issues/4586#issuecomment-1257298181 が正しいワイヤになります。
↓変更前
アンケートフォームの view の layout ファイルは、独自のものを用意する予定です。 このページはアンケート個別ページでもあり、アンケートフォームでもあるので、URLについては相談しながら決めましょう。

このissue|PRは60日間更新がないため7日後にcloseします。closeしたくない場合はstaleラベルを外してください。
@machida こちらのissueなのですが、前回の計画ミーティングの時に「前回に引き続き、これも既存のPRにプッシュするissueですね」と聞いた気がするのですが、どちらのPRか教えていただけないでしょうか🙇♀️
また、「アンケート個別(アンケートフォーム)」にURLについては相談しながら決めましょうとありますが、いかがいたしましょうか? 前回のMTGでは「showはなくてよい」とおっしゃっており、全く別のURLになると認識しています。
ご回答よろしくお願いいたします🙇♀️
@AyakaTakashima
伝え忘れてました🙇♂️
https://github.com/fjordllc/bootcamp/pull/5370
こちらのブランチから新しいブランチを作って作業をお願いしますー
@machida
承知いたしました!ありがとうございます!
@machida 度々申し訳ございません! 下記についてはいかがでしょうか?
また、「アンケート個別(アンケートフォーム)」にURLについては相談しながら決めましょうとありますが、いかがいたしましょうか? 前回のMTGでは「showはなくてよい」とおっしゃっており、全く別のURLになると認識しています。
@AyakaTakashima アンケートフォームは今回のIssueには含めないことにしました。ただ、showの作成はお願いします。showはアンケートフォームのプレビューにしようと思ってます。文章だと分かりづらいのでここはワイヤフレームを作成します。
@machida 承知いたしました!それでは、showの方はそのワイヤーフレームの作成待ちということで問題ありませんでしょうか??
@AyakaTakashima はい、作成待ちでお願いします🙏
@AyakaTakashima お待たせしましたー。 show こんな感じでアンケートのプレビュー画面にしたいと思います。 自分で作ったアンケートの内容が確認できるページをお願いします。

このあと、何人が回答したかなども見れるようにしたいですが、それは別Issueにしたいと思います。
@machida 承知いたしました!ありがとうございます!
@machida お疲れ様です! 本件について、ER図を書いてみました。 実は、ER図を書くプラクティスをやった際に、6回も再提出になりました。 自信がないので一度みていただきたいです😭
もし、「ここはnullでもOK」というのがあれば、それもあわせて教えていただけますと助かります!
- タイトル
- 型:
text
- カラム名:
title
- 制約:
limit: 255, null: false
(日報のタイトルと同じ制約)
- 型:
- 質問
- 型:
references
- カラム名:
questionsurvey_question_id
にし、#5370 で作成いただいたquestionsurvey_question
テーブルのid
を外部キーとする - 制約:
foreign_key: true,null: false
- 型:
- 作成者
- 型:
references
- カラム名:
creator_id
- 制約:
foreign_key: { to_table: :users }
- 型:
- 作成日時
- 型:
datetime
- カラム名:
created_at
- 制約:
null: false
- 型:
- 更新者
- 型:
references
- カラム名:
updator_id
- 制約:
foreign_key: { to_table: :users }
- 型:
- 更新日時
- 型:
datetime
- カラム名:
updated_at
- 制約:
null: false
- 型:
- 回答期限日時
- 型:
datetime
- カラム名:
reply_deadline
- 制約:
null: false
- 型:
- WIP or 公開
- 型:
boolean
- カラム名:
wip
- 制約:
default: false, null: false
- 型:
特に、タイトルは日報と同じく必須でいいのか、回答期限も必須にしようと思いますがこれで良いのか、が気になっています。 よろしくお願いいたします🙇♀️
タイトルは日報と同じく必須でいいのか、回答期限も必須にしようと思いますがこれで良いのか、が気になっています。
どちらも必須でOKですー👍 DB設計は komagata さんに見てもらおうと思いますー
@komagata こちら確認お願いします🙏
@machida machidaさん、お返事ありがとうございます!!
@komagata komagataさん、ご確認よろしくお願いいたします🙇♀️
@machida かしこまりました。
@AyakaTakashima
creator_id
複数ある場合以外はそのままの名前のuser_id
でいいと思います。
更新者 (CC: @machida)
作成者とは別に更新者が必要な感じでしょうか?更新者は複数いると言うことになるので、ちゃんとやるには複雑になりそうです。(個人的には作成者があれば更新者はいらないのではないかと思います)
reply_deadline
railsでは日付はxxxx_on
、日時はxxxx_at
という命名規約があるので、できればそれに従う形の名前にできるといいなと思います。
@komagata ご確認ありがとうございます! 本issueのdescriptionにアンケートが持つデータとして更新者と作成者の項目がありましたので追加しておりました! しかし念の為machidaさんにお伺いしようと思います。
また、理解が及ばず申し訳ないのですが、
複数ある場合以外はそのままの名前のuser_idでいいと思います。
というのは何が複数ある場合でしょうか?🧐
@machida machidaさん、上記の更新者に関してご回答いただけますと幸いです🙇♀️
@AyakaTakashima すみません、このDB設計自体は @AyakaTakashima さんが作ったものではなく、既にあるものをER図に起こしただけなんですね。
DB設計に対するコメントは同じものを @daiki0381 さんの方にさせていただき、別のPRで議論を続けていきたいと思います。
というのは何が複数ある場合でしょうか?🧐
すみません、わかりずらい書き方でしたね。
userテーブルと関連するものが一つしかないのであればuser_id
という名前が一般的なのでcreator_id
ではなく、user_id
がいいのではないかという意味です。
@komagata
このDB設計自体は @AyakaTakashima さんが作ったものではなく、既にあるものをER図に起こしただけなんですね。
いえ、下記の設計図は私が作成したものです!
daiki0381 さんが担当しているissueと私が担当しているissueは兄弟関係にありますが、全く別のissueです。
machidaさんがdescriptionに書いて下さっている通りなのですが、daiki0381 さんがsurvey_questions
(アンケートでどの質問をするか)を作っていて、私がsurveys
(その質問がまとまったもの=つまりアンケート)を作成します。
ここでは、私が作成するsurveys
についてお伺いしております。
本issueのdescriptionにアンケートが持つデータとして更新者と作成者の項目がありましたので追加しておりました!
こちらの文章の意味は、「本issue(= #4586 )のdescriptionで、machidaさんが更新者と作成者の項目をアンケートのデータとして定めている」という意味でした。
ただ、daiki0381 さんが作成したPR(= #5370 )を確認したら、creater_id
、updater_id
がDBのカラムに入っていたので揃えた方がいいかなと思ったのは事実です。
#5370 を拝見したところ、machidaさんに確認して下さっているのでこのままお返事を待とうと思います!
ただ、daiki0381さんが作成したものを私が作成したというのは間違えで、このPRで私が作成しようと思っているものをER図に起こしたと認識していただけますと幸いです。 今一度、ご確認よろしくお願いいたします🙇♀️
userテーブルと関連するものが一つしかないのであればuser_idという名前が一般的なのでcreator_idではなく、user_idがいいのではないかという意味です。
なるほど!user_id
をcreator_id
とupdater_id
の両方で参照するER図を作成していたので、その前提で文章を読んでしまっていました。
確かにmachidaさんの要件定義にある「更新者」が不要となれば、updater_id
は不要になり、user_id
と名付けて良くな理ますね!
このままお返事を待ってようと思います😌
@AyakaTakashima
ただ、daiki0381さんが作成したものを私が作成したというのは間違えで、このPRで私が作成しようと思っているものをER図に起こしたと認識していただけますと幸いです。
なるほどです。認識しました。
@komagata #5370 の回答を拝見いたしました。 更新者のデータは不要ということで理解しました。
ER図の書き直しをいたしましたので、再度ご確認をお願いしたいです。
よろしくお願いいたします🙇♀️
@AyakaTakashima surveryが複数のsurvey_questionをもつのだとしたら、surveryのsurvey_question_idだと複数のものを表現できないかもです〜。
@komagata
修正してみました!ご確認よろしくお願いいたします🙇♀️
@AyakaTakashima これだとsurvey_questionは一つのsurveyにしか所属できないように思います〜
@komagata
度々申し訳ありません!
自分で第二正規化から考えてみました。
こちらの日報に考えた手順を書きました。
下記のように修正いたしましたので再度ご確認をよろしくお願いいたします。
@AyakaTakashima 中間テーブルになった部分はOKです〜。
ただ、reply_deadline_at
はcreated_at
やpublished_at
のように動詞じゃないと_at
が英語的に成り立たないので、名前を検討してみていただきたいです〜
@komagata
ありがとうございます!
deadline_survey_is_replied_at
と考えて、deadline_replied_at
でいかがでしょうか?
@AyakaTakashima 冗長な表現は避けたいので直訳を避けてexpires_at
などはいかがでしょうか。
@komagata
なるほど!expires_at
にします。ありがとうございます!
テーブル構造は下記で決定
@machida
お疲れ様です!surveys
の indexについて確認したいことがあります!
上記ページの、下記の部分で不明点があります。
下記についてご回答お願いいたします🙇♀️