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

管理者の場合、ユーザー情報変更ページでコース変更できるようにした #4596

Conversation

Saki-htr
Copy link
Contributor

@Saki-htr Saki-htr commented Apr 9, 2022

概要

現在、DBを直接変更しないとユーザーのコース変更ができないため、管理者でログインした時、ユーザー情報変更ページでコースを変更できるようにしました。

変更前

  • 管理者でログイン時、ユーザー情報変更ページに、コース変更の項目が無い。
    スクリーンショット 2022-04-09 18 58 31

変更後

  • 管理者でログイン時、ユーザー情報変更ページの「以下管理者のみ操作ができます」の下の一番目に、コースの項目が有る。
    Image from Gyazo

動作確認の手順

  1. feature/enable-change-courses-at-user-info-edit-page-when-logined-as-adminブランチをローカルに持ってきて、立ち上げる
  2. 管理者 (machida)でログインする。
  3. kensyu のユーザー個別ページにアクセスする。(http://localhost:3000/users/301971253)
  4. プロフィールのコースが「Rails Webプログラマー」になっていることを確認する。
  5. プロフィールの「管理者として情報変更」をクリックする。
  6. 「以下管理者のみ操作ができます」の下の一番目に、「コース」の項目があることを確認する。
  7. コースを「iOSプログラマー」に変更し、「更新する」をクリックする。
  8. kensyuのプロフィールのコースが、「iOSプログラマー」に変更されていることを確認する。

@Saki-htr Saki-htr changed the title Feature/enable change courses at user info edit page when logined as admin 管理者の場合、ユーザー情報変更ページでコース変更できるようにした Apr 9, 2022
@Saki-htr Saki-htr force-pushed the feature/enable-change-courses-at-user-info-edit-page-when-logined-as-admin branch from cfb8a11 to 4ca22ac Compare April 10, 2022 05:33
@Saki-htr Saki-htr self-assigned this Apr 11, 2022
= f.label :course_id, class: 'a-form-label is-required'
.a-button.is-md.is-secondary.is-select.is-block
= f.collection_select :course_id, Course.order(:created_at), :id, :title, {}
= f.collection_select :course_id, Course.order(:created_at), :id, :title
.a-form-help
p コースの一覧は#{link_to 'こちら', courses_path, trget: '_blank'}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

新しくコース変更用のパーシャルを作成しようとしたところ、すでにusers/form下に_course.html.slimが存在しており、中身を確認したところ、そのままコース変更の項目として利用できそうでしたので、こちらのパーシャルを使うことにし、app/views/users/_form.html.slimrenderしています。

こちらのパーシャルが他のファイルで呼び出されているか確認したところ、リポジトリ内を「users/form/course」 や 「form/course」で検索しても出てこず、コードに変更を加えても他の場所に影響がないと考え、以下2点を変更いたしました。

  1. {}は削除しても動作に問題がなかったため、不要と考え削除しました。
  2. .form-item.is-hiddenですと、renderしても表示されないため、users/form/job_seekingusers/form/companyなどのCSSセレクタに合わせ、.form-itemに変更しました。

@Saki-htr Saki-htr requested a review from saeyama April 11, 2022 04:57
@Saki-htr
Copy link
Contributor Author

@saeyama さん
お疲れさまです☺️
ユーザーの登録情報変更ページまわりのissueを担当されていらしたので、こちらのレビューをお願いさせていただければと思います🙏
急いでいないので、いつでも大丈夫です🙆‍♀️
また、レビュー依頼が複数きている等でお忙しいようでしたら、他の方に依頼しますので、遠慮なく仰ってください~
よろしくお願いいたします🙇‍♀️

Copy link
Contributor

@saeyama saeyama left a comment

Choose a reason for hiding this comment

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

@Saki-htr さん、レビュー依頼ありがとうございます!
説明とてもわかりやすかったです。ありがとうございます😊
動作およびテストが通ったことを確認出来ました!

1点、お手数ですがDraft Pull RequestになっていたのでPull Requestに変更お願いします…!
私の方ではApprove致します!よろしくお願いします🙏

= f.label :course_id, class: 'a-form-label is-required'
.a-button.is-md.is-secondary.is-select.is-block
= f.collection_select :course_id, Course.order(:created_at), :id, :title, {}
Copy link
Contributor

Choose a reason for hiding this comment

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

{}は削除しても動作に問題がなかったため、不要と考え削除しました。

余談なんですが、以前レビューさせてもらった、#4385app/views/users/form/_company.html.slim{}がないと、その後ろに記述されるHTML属性が効かなかったので、今後、Choices-jsを使って、インクリメンタルサーチできる仕様にする可能性ありそうな気がしたので、残しておいてもいいのかな〜って一瞬思ったのですが、現状なくても動くので問題ないと思います…!

参考にしたサイト

Copy link
Contributor Author

Choose a reason for hiding this comment

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

{}は、Choices-jsを使って、インクリメンタルサーチできるようにする際に必要なのですね〜
勉強になります。ありがとうございます!

  • 今は問題なく動いているので、削除しておくか
  • 今後、Choices-jsを使って、インクリメンタルサーチできる仕様にする可能性があるので削除しないでおくか

で非常に迷ったのですが、今後に備えて残しておくことにしました。
61e71e5のコミットで修正しましたので、ご確認をお願いいたします🙏

Copy link
Contributor

Choose a reason for hiding this comment

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

戻して頂いたんですね…!ありがとうございます🙏

{}は、Choices-jsを使って、インクリメンタルサーチできるようにする際に必要なのですね〜

Choices-jsに限らず、javascriptとかで何かイベントを発火させたい時に、記述の順番として
HTML属性={} or イベント属性={}の指定の前にはオプション={}が必要そうな感じがしました…!
もしかしたら、なくても内容によっては動くかもしれませんが😅

参考にしたサイトより↓

f.collection_select(メソッド名, 要素の配列, value属性の項目, テキストの項目, オプション={}, HTML属性={} or イベント属性={})


私が以前レビューさせてもらったissueの場合だと、company-select.jsの4行目のgetElementById('js-company-select')_company.html.slim= f.collection_select に指定した時に{}を外すと動かなかったんですよね〜。

document.addEventListener('DOMContentLoaded', () => {
const element = document.getElementById('js-company-select')
if (element) {
return new Choices(element, {
removeItemButton: true,
allowHTML: true,
searchResultLimit: 10,
searchPlaceholderValue: '検索ワード',
noResultsText: '一致する情報は見つかりません',
itemSelectText: '選択'
})
}
})

= f.collection_select :company_id, all_companies_with_empty, :id, :name, {}, { id: 'js-company-select' }

@Saki-htr Saki-htr marked this pull request as ready for review April 12, 2022 01:17
@Saki-htr Saki-htr force-pushed the feature/enable-change-courses-at-user-info-edit-page-when-logined-as-admin branch from 4ca22ac to 61e71e5 Compare April 12, 2022 05:54
@Saki-htr Saki-htr requested a review from saeyama April 12, 2022 06:36
@Saki-htr
Copy link
Contributor Author

@saeyama さん

早速レビューしてくださってありがとうございます🙏 ✨
伊藤さんより、こちらの日報で、システムテストでfindでなく reload を使うべきと教えていただきましたので、修正いたしました。
既に見てくださったのに大変申し訳ないのですが、再度レビューをrequestさせていただきました。
お手すきの際にご確認いただけますと幸いです🙇‍♀️

変更点は以下の3つです。

1点目:Draft Pull Request を Pull Requestに変更

Draft Pull Request を Pull Requestに変更にするのを失念しており、申し訳ありませんでした🙏
変更いたしました!

2点目:{}を再入力しました

こちらに詳細をコメントいたしましたが、削除した{}を再度入力することにいたしました。

3点目:システムテストのfindreloadに変更しました。

findreloadどちらも、DBからデータを再読み込みし、最新の値を取得しているのですが、 以下2点の理由から、reloadに変更しました。

  1. User.find(user.id)を使うと冗長で、reloadを使った方がシンプルなため
  2. user.reloadを使ったほうが、「userのデータを再読み込み(reload)する」という意図が分かりやすいため

b3bbf37 のコミットで修正いたしました。

Copy link
Contributor

@saeyama saeyama left a comment

Choose a reason for hiding this comment

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

@Saki-htr さん、変更頂いた3点確認できました!
テストのreloadとても勉強になりました…!
日報も読ませていただきました〜!ありがとうございます🙏

改めて、Approve致します!よろしくお願いします😁

= f.label :course_id, class: 'a-form-label is-required'
.a-button.is-md.is-secondary.is-select.is-block
= f.collection_select :course_id, Course.order(:created_at), :id, :title, {}
Copy link
Contributor

Choose a reason for hiding this comment

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

戻して頂いたんですね…!ありがとうございます🙏

{}は、Choices-jsを使って、インクリメンタルサーチできるようにする際に必要なのですね〜

Choices-jsに限らず、javascriptとかで何かイベントを発火させたい時に、記述の順番として
HTML属性={} or イベント属性={}の指定の前にはオプション={}が必要そうな感じがしました…!
もしかしたら、なくても内容によっては動くかもしれませんが😅

参考にしたサイトより↓

f.collection_select(メソッド名, 要素の配列, value属性の項目, テキストの項目, オプション={}, HTML属性={} or イベント属性={})


私が以前レビューさせてもらったissueの場合だと、company-select.jsの4行目のgetElementById('js-company-select')_company.html.slim= f.collection_select に指定した時に{}を外すと動かなかったんですよね〜。

document.addEventListener('DOMContentLoaded', () => {
const element = document.getElementById('js-company-select')
if (element) {
return new Choices(element, {
removeItemButton: true,
allowHTML: true,
searchResultLimit: 10,
searchPlaceholderValue: '検索ワード',
noResultsText: '一致する情報は見つかりません',
itemSelectText: '選択'
})
}
})

= f.collection_select :company_id, all_companies_with_empty, :id, :name, {}, { id: 'js-company-select' }

@Saki-htr Saki-htr requested a review from komagata April 13, 2022 00:35
@Saki-htr
Copy link
Contributor Author

@saeyama さん
早速レビューしてくださってありがとうございました!
f.collection_selectについて、とても丁寧に教えてくださってありがとうございます☺️

@komagata さん
チームメンバーのレビューを通りましたので、お手すきの際にレビューしていただけますと幸いです。
よろしくお願いいたします🙇‍♀️

@@ -182,4 +182,14 @@ class Admin::UsersTest < ApplicationSystemTestCase
assert_text 'アドバイザー'
end
end

test 'admin can change user course' do
Copy link
Member

Choose a reason for hiding this comment

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

逆に一般ユーザーで変更できると困るので、「一般ユーザーは変更できない」というテストもあるとありがたいです〜

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@komagata さん
仰る通り、「一般ユーザーは変更できない」テストも追加したほうが良いと思いましたので、追加いたしました。
16b7905で変更しております。

テスト名ですが、'not admin cannot change user course' ですと、2つ否定が入っていて分かりづらいと思いましたので、 'general user cannot change user course' という名前にしました。
よろしくお願いいたします🙏

@Saki-htr Saki-htr force-pushed the feature/enable-change-courses-at-user-info-edit-page-when-logined-as-admin branch from dc297a6 to 16b7905 Compare April 17, 2022 04:42
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 de027c6 into main Apr 17, 2022
@komagata komagata deleted the feature/enable-change-courses-at-user-info-edit-page-when-logined-as-admin branch April 17, 2022 06:43
@github-actions github-actions bot mentioned this pull request Apr 17, 2022
20 tasks
@Saki-htr
Copy link
Contributor Author

@komagata @machida
お疲れ様です。
お手すきの際に、本番環境での動作確認をお願いいたします。
よろしくお願いいたします🙇‍♀️

@komagata
Copy link
Member

@Saki-htr 本番環境で動作することを確認しました。

@Saki-htr
Copy link
Contributor Author

@komagata さん
ご確認いただき、ありがとうございます!
issueをcloseいたしました🙏

@Saki-htr Saki-htr added the 2 label Jul 5, 2022
@Saki-htr Saki-htr removed the 2 label Aug 6, 2022
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.

3 participants