Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[アンケート機能]アンケート用の質問の一覧、作成、編集ができるようにしたい #5370

Merged
merged 38 commits into from
Nov 11, 2022

Conversation

daiki0381
Copy link
Member

@daiki0381 daiki0381 commented Aug 15, 2022

Issue

概要

アンケート (survey) が複数の質問 (survey_questions) を持つ。アンケートを作成する際に、そのアンケートでどの質問をするかを survey_questions の中からいくつか選択するというのを構想している。このissueではsurvey_questionsを作る。

質問の形式は以下の5種類

  • 段落 (textarea)
  • 記述式 (input type="text")
  • ラジオボタン
  • チェックボックス
  • 均等目盛

質問が共通で持つもの

  • 質問タイトル
  • 質問説明文 (必須ではない)
  • 質問の形式 (上記の5つのどれか)
  • 質問作成者
  • 質問作成日時
  • 質問更新者
  • 質問更新日時
  • 必須 or 任意

それ以外の持つ情報は質問の形式で異なる。

ナビゲーション

  • メンター、管理者のみメニューに「アンケート」が表示される。
  • リンク先は質問一覧 (/survey_questions)

image

質問一覧

  • タブはダミー (リンク先は空)

image

質問作成・編集

  • 質問形式を変えると初期化される。(質問形式は段落を選択しているのに、ラジオボタンの選択肢が入力されているのはおかしいので)
  • 質問タイトルは入力していないとバリデーションがかかる。

段落

image

記述式

image

ラジオボタン

下記はラジオボタンを選択している状態で入力していないとバリデーションがかかる。

  • 選択肢
  • 選択した理由タイトル

image

チェックボックス

下記はチェックボックスを選択している状態で入力していないとバリデーションがかかる。

  • 選択肢
  • 選択した理由タイトル

image

均等目盛

下記は均等目盛を選択している状態で入力していないとバリデーションがかかる。

  • 最初の目盛 (1)
  • 最後の目盛 (10)
  • 選択した理由タイトル

image

選択した理由

ラジオボタン、チェックボックス

ラジオボタン、チェックボックスは、その選択肢の中でその項目を選択した場合は、それを選択した理由を聞くことができるようにする。理由を聞く場合は、その選択肢に「選択した理由が必要な場合はチェック」にチェックを入れる。

均等目盛

均等目盛の場合は、どれを選択したかに関わらず、それを選択した理由を聞くか、聞かないかを選択する。
理由を聞く場合は、「選択した理由が必要な場合はチェック」にチェックを入れる。

質問個別

質問個別ページはその質問を実施したアンケート一覧である。現時点では、アンケート一覧表示は不要。=> 今回のissueでは対応しない。

ER図

スクリーンショット 2022-09-03 0 11 03

変更確認方法

  1. ブランチfeature/create_survey_questionsをローカルに取り込む
  2. bin/rails sでローカル環境を立ち上げる
  3. メンターアカウントでログインし、http://localhost:3000/survey_questions にアクセスする
  4. 「新規作成」をクリックする
  5. 質問タイトルを入力し、質問形式を「段落」に設定して「保存」をクリックする

変更後

質問一覧

質問一覧

質問作成

段落

段落

記述式

記述式

ラジオボタン

ラジオボタン

チェックボックス

チェックボックス

均等目盛

均等目盛

質問編集

段落

段落_編集

記述式

記述式_編集

ラジオボタン

ラジオボタン_編集

チェックボックス

チェックボックス_編集

均等目盛

均等目盛_編集

@daiki0381 daiki0381 self-assigned this Aug 15, 2022
@daiki0381 daiki0381 changed the title 質問の追加まで [アンケート機能]アンケート用の質問の一覧、作成、編集ができるようにしたい Aug 15, 2022
@daiki0381 daiki0381 marked this pull request as ready for review August 16, 2022 07:29
@daiki0381
Copy link
Member Author

@SatoshiHaramura
お疲れ様です。
お手隙の際に、こちらのレビューをお願いしたいです🙏
ご不明な点やご都合が合わないようでしたら、お気軽にご連絡ください!

Copy link
Contributor

@SatoshiHaramura SatoshiHaramura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
お疲れさまです。
ボリュームが多いので、まだ全てを確認出来ていないのですが、取り急ぎテーブルとView周りを確認してコメントさせていただきましたので、ご確認お願い致します🙏

また、その他のコードも並行して確認していきますので、随時コメントさせていただこうと思います🙏

あと、質問形式段落記述式の違いが分からなかったのですが、何かご存知でしょうか?(もしかして、質問形式という文言ではなくて、回答形式という文言なのかなとも思ったりしました)

それにしても、アンケート機能は壮大ですね😅

| 新規作成
- @survey_questions.each do |survey_question|
div
= survey_question.question_title
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

質問一覧のスクショを見たところ、タイトルの他に以下の項目も表示しておく必要があるのかなぁとも思いました。(今回のスコープ内でしょうか?)

  • 形式(ラジオボタンや段落など)
  • 作成日時
  • 更新日時
  • 実施

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらeb39e37で修正しました。実施に関してはsurveyの範疇なので、今回のissueでは表示していないです。

li.checkboxes__item
= f.check_box :reason_for_choice_required, class: 'a-toggle-checkbox js-warning-form'
= f.label :reason_for_choice_required do
| 選択した理由が必須の場合はチェック
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スクショの文言では、「選択した理由が必要な場合はチェック」となっていそうです。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら8b7dda7で修正しました。

li.checkboxes__item
= f.check_box :reason_for_choice_required, class: 'a-toggle-checkbox js-warning-form'
= f.label :reason_for_choice_required do
| 選択した理由が必須の場合はチェック
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スクショの文言では、「選択した理由が必要な場合はチェック」となっていそうです。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら8b7dda7で修正しました。

t.text :question_description
t.integer :question_format, default: 0
t.boolean :answer_required, default: false
t.references :user, foreign_key: true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

更新者のカラムも必要だったりしないでしょうか?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら2d7bab4で修正しました。

@daiki0381 daiki0381 force-pushed the feature/create_survey_questions branch from fe7d3f3 to a4aa88d Compare August 18, 2022 08:31
@daiki0381
Copy link
Member Author

daiki0381 commented Aug 18, 2022

@machida
お疲れ様です。仕様に関してご相談させてください🙏

【相談事項】

  • 質問はメンターであれば誰でも編集可能でしょうか。それとも作成者のみ編集可能でしょうか。(また作成者のみ編集可能である場合、更新者のカラムは必要でしょうか)

@daiki0381
Copy link
Member Author

@SatoshiHaramura

あと、質問形式の段落と記述式の違いが分からなかったのですが、何かご存知でしょうか?(もしかして、質問形式という文言ではなくて、回答形式という文言なのかなとも思ったりしました)

段落を選択した場合は、下記の画像のようなアンケートフォームの質問の回答部分がtext_areaになります。記述式を選択した場合は、回答部分がinput type="text"になります。(アンケートフォームはこちらのissueで対応予定です。)

image

@SatoshiHaramura
Copy link
Contributor

@daiki0381

あと、質問形式の段落と記述式の違いが分からなかったのですが、何かご存知でしょうか?(もしかして、質問形式という文言ではなくて、回答形式という文言なのかなとも思ったりしました)

段落を選択した場合は、下記の画像のようなアンケートフォームの質問の回答部分がtext_areaになります。記述式を選択した場合は、回答部分がinput type="text"になります。(アンケートフォームはこちらのissueで対応予定です。)

ご説明ありがとうございます🙇‍♂️
回答部分の入力欄が異なる、ということで理解しました!

@machida
Copy link
Member

machida commented Aug 27, 2022

@daiki0381 回答遅れてすいません🙇‍♂️メンターは誰でも編集可能でお願いします🙏

@daiki0381 daiki0381 force-pushed the feature/create_survey_questions branch from 6d96934 to 2d7bab4 Compare September 1, 2022 11:35
@daiki0381
Copy link
Member Author

@SatoshiHaramura
レビューありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

Copy link
Contributor

@SatoshiHaramura SatoshiHaramura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
お疲れさまです。
修正ありがとうございました!

1通りコードを見まして、理解が不足している点がありましたので質問させて頂きました🙏よろしくお願い致します。

td(style="border: 1px solid black; padding: 5px 15px;")
= survey_question.question_title
td(style="border: 1px solid black; padding: 5px 15px;")
= "作成: #{survey_question.created_at.strftime("%Y年%-m月%-d日 (#{%w[日 月 火 水 木 金 土][survey_question.created_at.wday]})")}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

formatオプションでlongを指定すると、より簡潔になるかと思いましたので、よろしければご検討お願い致します🙏

Suggested change
= "作成: #{survey_question.created_at.strftime("%Y年%-m月%-d日 (#{%w[日 月 火 水 木 金 土][survey_question.created_at.wday]})")}"
= "作成: #{l survey_question.created_at, format: :long}"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご提案ありがとうございます🙏 lメソッドを使用するとすっきり書けるんですね✨ 勉強になりました!こちら9f7c3c0で修正しました!

def create
@survey_question = SurveyQuestion.new(survey_question_params)
@survey_question.creator_id = current_user.id
switch_initialization
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

switch_initializationメソッドが、ここで必要な理由が分からなかったので、お手数ですが教えていただきたいです🙏

Copy link
Member Author

@daiki0381 daiki0381 Sep 2, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら削除しても問題なく機能したため51a05cdで削除しました。紛らわしくて申し訳ないです🙇‍♂️

@@ -126,6 +126,18 @@ class User < ApplicationRecord
through: :organizers,
source: :regular_event

has_many :create_questions,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

create_questionsが必要な理由が分からなかったので、お手数ですが教えて頂きたいです🙏

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらは下記のように1:多の関係でuserの外部キーを2つ登録しているので、アソシエーションを2つ設定しています。外部キーは別名で登録しているので、class_name: 'SurveyQuestion'としています。またcreate_questionsという命名は分かりにくいと思うので、39e541cで修正しました。

スクリーンショット 2022-09-03 0 11 40

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
UserモデルとSurveyQuestionモデルの1:多の関連付けであれば、Userモデルには以下のような関連付けのみでよさそうな気もするのですが、いかがでしょうか??
has_many :survey_questions, dependent: :destroy

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらですが外部キーを2つ登録しているので、has_many :survey_questions, dependent: :destroyのみの関連付けだと、どちらを取得すればいいのか分からずObject doesn't support #inspectと表示されてしまいます。

スクリーンショット 2022-09-03 15 36 58

スクリーンショット 2022-09-03 15 35 48

Copy link
Contributor

@SatoshiHaramura SatoshiHaramura Sep 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
失礼致しました🙇‍♂️外部キーを2つ登録していると、こうなってしまうのですね😓

またcreate_questionsという命名は分かりにくいと思うので、39e541cで修正しました。

あと、名前を変更されたようですが、user.creatorsはユーザーの作成者、user.updatersはユーザーの更新者と訳されると思います。ただ、実態はアンケート質問なので、誤認しやすいなと思いました。
何か適切な命名があればなぁと思いましたがいかがでしょうか。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あと、名前を変更されたようですが、user.creatorsはユーザーの作成者、user.updatersはユーザーの更新者と訳さると思います。ただ、実態はアンケート質問なので、誤認しやすいなと思いました。

その通りですね💦 こちらa5ee7feで修正しました!

@daiki0381
Copy link
Member Author

@SatoshiHaramura
レビューありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

@SatoshiHaramura
Copy link
Contributor

@daiki0381
UserモデルとSurveyQuestionモデルの1:多の関連付けについて、コメントさせて頂きましたのでご確認頂きたいです🙏

@daiki0381
Copy link
Member Author

@SatoshiHaramura
ありがとうございます🙇‍♂️ コメントしましたのでご確認お願いします。

@SatoshiHaramura
Copy link
Contributor

@daiki0381
ご説明ありがとうございました!理解ができました!
追加で、名前の命名についてコメントさせて頂きましたので、ご確認お願い致します🙏

@daiki0381
Copy link
Member Author

@SatoshiHaramura
ありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

Copy link
Contributor

@SatoshiHaramura SatoshiHaramura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
お疲れさまです。
テストについてコメントさせて頂きましたので、ご確認お願い致します🙏


require 'application_system_test_case'

class SurveyQuestionsTest < ApplicationSystemTestCase
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ルーティングでindexとeditも作成されているので、併せてそれらのテストケースも追加しておいた方がよいかなと思いましたがいかがでしょうか?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちら98caef4で修正しました。

@daiki0381
Copy link
Member Author

@SatoshiHaramura ありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

Copy link
Contributor

@SatoshiHaramura SatoshiHaramura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daiki0381
ご対応ありがとうございました!
動作とコードを確認して大丈夫そうだと思いましたのでApproveさせて頂きます🙆‍♂️

大規模な機能を実装されて、シンプルにすごいなぁと思いました😄
テーブルの設計やJSでの表示/非表示の方法など、多くのことを学ばせて頂きました😊

@daiki0381
Copy link
Member Author

@SatoshiHaramura こちらこそご丁寧にレビューして頂きありがとうございました🙇‍♂️

@daiki0381
Copy link
Member Author

@machida
お疲れ様です。お手隙の際に、こちらのデザインをお願いしたいです。また、こちらのissueは本番に反映してもよろしいでしょうか。

@machida machida self-assigned this Sep 5, 2022
@machida
Copy link
Member

machida commented Sep 5, 2022

@daiki0381 デザイン了解ですー
本番に反映するか、こちら次回MTGで話し合いたいと思いますー

@daiki0381
Copy link
Member Author

@machida ありがとうございます🙇‍♂️ 承知しました!

@daiki0381 daiki0381 force-pushed the feature/create_survey_questions branch from 543bcdb to 98350fa Compare October 26, 2022 05:01
@daiki0381
Copy link
Member Author

@komagata レビューありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

@machida
Copy link
Member

machida commented Nov 5, 2022

@komagata こちらレビューが通ったらマージをお願いします🙏

@komagata
Copy link
Member

komagata commented Nov 7, 2022

@machida こちら個別の箇所で議論が続いている感じです〜。レビュー完了までもうしばらく時間がかかりそうです〜

@machida
Copy link
Member

machida commented Nov 7, 2022

@komagata 了解ですー

@daiki0381
Copy link
Member Author

@komagata レビューありがとうございます🙇‍♂️ ご指摘頂いた箇所を修正しましたので、再度レビューお願いします🙏

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 9a58a9d into main Nov 11, 2022
@komagata komagata deleted the feature/create_survey_questions branch November 11, 2022 06:44
@github-actions github-actions bot mentioned this pull request Nov 11, 2022
19 tasks
@daiki0381
Copy link
Member Author

@komagata ありがとうございます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants