Skip to content

プロフィールページの選択入力の研修感想がハッシュ展開のような表示になっている #9067#9222

Open
zamami wants to merge 4 commits intomainfrom
bug/profile-hash-display
Open

プロフィールページの選択入力の研修感想がハッシュ展開のような表示になっている #9067#9222
zamami wants to merge 4 commits intomainfrom
bug/profile-hash-display

Conversation

@zamami
Copy link
Copy Markdown
Contributor

@zamami zamami commented Oct 1, 2025

Issue

概要

・一部研修ユーザーにおいて、プロフィールページの選択入力の研修感想がハッシュ展開のような表示になっているバグを修正。

変更確認方法

1.mainブランチでbin/devを実行する
2.komagataでhttp://localhost:3000/users/782540538にアクセスする
3.「研修終了情報(非公開)」、「選択入力の研修感想」が「とても良い」になっているのを確認する
4.新しくターミナルを開き、mainブランチでrails c を実行する
5.u = User.find_by!(login_name: 'kensyuowata')を実行する。
6.u.update_column(:satisfaction, nil) を実行する。
4.http://localhost:3000/users/782540538ページをリロードし、
「研修終了情報(非公開)」、「選択入力の研修感想」がハッシュ展開になっているのを確認する
5.u.update_column(:satisfaction, 0) を実行し、値を元に戻す。

6.git fetch origin bug/profile-hash-displayを実行してブランチをbug/profile-hash-displayに変更し、bin/devを実行する
7.komagataでhttp://localhost:3000/users/782540538にアクセスする
8.「研修終了情報(非公開)」、「選択入力の研修感想」が「とても良い」になっているのを確認する
9.新しくターミナルを開き、bug/profile-hash-displayブランチでrails c を実行する
10.u = User.find_by!(login_name: 'kensyuowata')を実行する。
11.u.update_column(:satisfaction, nil) を実行する。
12.http://localhost:3000/users/782540538ページをリロードし、
「研修終了情報(非公開)」、「選択入力の研修感想」が「未入力」になっているのを確認する
13.u.update_column(:satisfaction, 0) を実行し、値を元に戻す。

Summary by CodeRabbit

  • バグ修正

    • 研修完了情報の満足度が未入力の場合、「未入力」を表示するように変更。空欄や不正確な表示を防止し、ユーザー詳細ページの表示の一貫性を向上。既存の表示ロジックを見直し、不要な翻訳参照を回避。

    スクショ

変更前
_development__kensyuowataさんのプロフィール___FBC

変更後
_development__kensyuowataさんのプロフィール___FBC

@zamami zamami self-assigned this Oct 1, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Oct 1, 2025

📝 Walkthrough

Walkthrough

ユーザー詳細の「研修完了情報」表示で、満足度(satisfaction)がnilの場合に「未入力」を表示する条件分岐を追加。併せて、この挙動を検証するシステムテストを新規追加。

Changes

Cohort / File(s) Change Summary
View 条件分岐追加
app/views/users/_training_completion_info.html.slim
user.satisfaction がnilなら「未入力」、それ以外は翻訳された値を表示する条件分岐を導入。
System テスト追加
test/system/training_completion_test.rb
満足度がnilの場合に「未入力」が表示されることを確認するテストケースを追加。

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor U as User (Browser)
  participant C as UsersController
  participant V as _training_completion_info.html.slim
  participant M as User Model

  U->>C: ユーザー詳細ページをリクエスト
  C->>M: ユーザー読み込み
  M-->>C: User インスタンス
  C->>V: 部分テンプレートをレンダリング
  alt satisfaction が nil
    V-->>U: 「未入力」を表示
  else satisfaction が存在
    V-->>U: 翻訳済み満足度を表示
  end
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • jun-kondo
  • komagata

Poem

ぴょんと跳ねてビューを確認、nilだって怖くない
「未入力」そっと置いて、空白の穴を塞ぐのだ
テストも一緒にぴったり追走
うさぎの足跡、安定の証
(=^·^=)✿ 今日は安心してにんじんタイム

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed 現在のタイトルは修正内容ではなくバグの状態を説明しており「修正」アクションが明確でないうえ冗長に.issue番号が含まれているため、変更内容を端的に表すタイトルにはなっていません。
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Description check ✅ Passed プルリクエストの説明は、テンプレートのほぼすべての必須セクション(Issue、概要、変更確認方法、スクリーンショット)を含んでおり、詳細かつ明確に記述されている。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bug/profile-hash-display

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot requested a review from komagata October 1, 2025 07:36
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 241422d and f67520a.

📒 Files selected for processing (3)
  • app/controllers/training_completion_controller.rb (1 hunks)
  • app/views/users/_training_completion_info.html.slim (1 hunks)
  • test/system/training_completion_test.rb (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.rb

⚙️ CodeRabbit configuration file

**/*.rb: # refactoring

  • まずFat Controllerを避け、次にFat Modelを避ける。
  • Serviceクラスの乱用を避ける。
  • controller concernを作ろうとしたらPORO(Plain Old Ruby Object)やActiveRecordモデルでの実装で代替できないか検討する。

Rails Patterns

  • ViewHelperにメソッドを実装する時にはまずDecoratorパターンを使うことを検討する。(active_decorator gemを導入しているのでそれを使う)
  • 複雑なActiveRecordクエリがあり、再利用できそうな場合はQueryObjectパターンを検討する。(rails-patterns gemを導入しているのでそれのQuery機能を使う)
  • Viewにpartialを作る場合はViewComponentを使うことを検討する。
  • 複数のActiveRecordモデルを操作する1つの責務がある時や外部APIとやりとりする処理がある場合にはInteractorオブジェクトパターンを検討する。(interactor gemを導入しているのでそれを使う)
  • 複数のInteractorを実行するような処理がある場合Organizerオブジェクトパターンを検討する。(interactor gemを導入しており、その中にOrganizerの機能があるので使う)

Files:

  • test/system/training_completion_test.rb
  • app/controllers/training_completion_controller.rb
test/**/*

⚙️ CodeRabbit configuration file

test/**/*: # Test

  • TestCase名は英語で書く。
  • どうしても避けられない時以外にsystem testでsleepは使わない。

Unit Test

model, helper, decorator, view_componentについてはメソッドを追加した場合は必ず対応したUnit TestのTestCaseを1つは書く。

Files:

  • test/system/training_completion_test.rb
🧬 Code graph analysis (1)
app/controllers/training_completion_controller.rb (1)
app/controllers/user_sessions_controller.rb (1)
  • new (6-8)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build_and_test
🔇 Additional comments (3)
app/views/users/_training_completion_info.html.slim (1)

14-14: LGTM! nil チェックでハッシュ展開のような表示を防止しています。

三項演算子を使用して satisfaction が nil の場合に「未入力」を表示し、値がある場合は翻訳済みの enum 値を表示する実装は適切です。PR の目的であるバグ修正が正しく行われています。

app/controllers/training_completion_controller.rb (1)

9-11: LGTM! フォームの初期値設定として適切な実装です。

||= 演算子を使用して satisfaction が未設定の場合のみ「良い」に初期化する実装は、フォームのデフォルト値を設定する一般的なパターンであり、適切です。データベースへの保存は行わず、メモリ上での初期化のみを行っているため、Fat Controller にもなっていません。

test/system/training_completion_test.rb (1)

166-169: LGTM! フォームの初期状態を適切にテストしています。

テスト名が英語で記述されており、コーディングガイドラインに準拠しています。assert_checked_field を使用して「良い」オプションがプリセレクトされていることを検証する実装は適切です。

@zamami zamami force-pushed the bug/profile-hash-display branch 2 times, most recently from 3208bc3 to f8bd4f6 Compare October 1, 2025 11:20
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
app/views/users/_training_completion_info.html.slim (1)

14-14: バグ修正が適切に実装されています。

satisfactionnil の場合に「未入力」を表示するガード処理により、ハッシュ展開のような表示バグが修正されています。三項演算子の使用も適切です。

任意の改善案として、コーディングガイドラインに従い、この表示ロジックを Decorator パターン(active_decorator gem)でカプセル化することも検討できます。ただし、現在のシンプルな実装で十分です。

任意のリファクタリング例:

app/decorators/user_decorator.rb にメソッドを追加する場合:

def formatted_satisfaction
  satisfaction.nil? ? '未入力' : I18n.t("activerecord.enums.user.satisfaction.#{satisfaction}")
end

ビューでは以下のように使用:

= user.formatted_satisfaction

ただし、この変更は現時点では必須ではありません。

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3208bc3 and f8bd4f6.

📒 Files selected for processing (3)
  • app/controllers/training_completion_controller.rb (1 hunks)
  • app/views/users/_training_completion_info.html.slim (1 hunks)
  • test/system/training_completion_test.rb (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • test/system/training_completion_test.rb
🧰 Additional context used
📓 Path-based instructions (1)
**/*.rb

⚙️ CodeRabbit configuration file

**/*.rb: # refactoring

  • まずFat Controllerを避け、次にFat Modelを避ける。
  • Serviceクラスの乱用を避ける。
  • controller concernを作ろうとしたらPORO(Plain Old Ruby Object)やActiveRecordモデルでの実装で代替できないか検討する。

Rails Patterns

  • ViewHelperにメソッドを実装する時にはまずDecoratorパターンを使うことを検討する。(active_decorator gemを導入しているのでそれを使う)
  • 複雑なActiveRecordクエリがあり、再利用できそうな場合はQueryObjectパターンを検討する。(rails-patterns gemを導入しているのでそれのQuery機能を使う)
  • Viewにpartialを作る場合はViewComponentを使うことを検討する。
  • 複数のActiveRecordモデルを操作する1つの責務がある時や外部APIとやりとりする処理がある場合にはInteractorオブジェクトパターンを検討する。(interactor gemを導入しているのでそれを使う)
  • 複数のInteractorを実行するような処理がある場合Organizerオブジェクトパターンを検討する。(interactor gemを導入しており、その中にOrganizerの機能があるので使う)

Files:

  • app/controllers/training_completion_controller.rb
🧬 Code graph analysis (1)
app/controllers/training_completion_controller.rb (1)
app/controllers/user_sessions_controller.rb (1)
  • new (6-8)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build_and_test
🔇 Additional comments (1)
app/controllers/training_completion_controller.rb (1)

9-11: デフォルト値の設定ロジックは適切です。‘good’ は User モデルの satisfaction enum に定義されています。

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
test/system/training_completion_test.rb (1)

157-164: テストの前提条件を明示的に設定することを検討してください。

テストの構造と英語の命名規則への準拠は適切です。ただし、研修終了情報セクションが表示されるためには training_completed_at が設定されている必要があります。現在のテストは :kensyuowata フィクスチャがこの値を持っていることを前提としていますが、より堅牢にするため、テスト内で明示的に設定することを推奨します。

以下のように修正することで、テストの意図がより明確になります:

  test 'shows not entered when satisfaction is nil' do
    user = users(:kensyuowata)
-   user.update!(satisfaction: nil)
+   user.update!(satisfaction: nil, training_completed_at: Time.current)

    visit_with_auth "/users/#{user.id}", 'komagata'
    assert_text '研修終了情報(非公開)'
    assert_text '未入力'
  end

これにより、フィクスチャの状態に依存せず、テストの前提条件が明確になります。

Based on coding guidelines

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f8bd4f6 and b7b6f59.

📒 Files selected for processing (1)
  • test/system/training_completion_test.rb (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.rb

⚙️ CodeRabbit configuration file

**/*.rb: # refactoring

  • まずFat Controllerを避け、次にFat Modelを避ける。
  • Serviceクラスの乱用を避ける。
  • controller concernを作ろうとしたらPORO(Plain Old Ruby Object)やActiveRecordモデルでの実装で代替できないか検討する。

Rails Patterns

  • ViewHelperにメソッドを実装する時にはまずDecoratorパターンを使うことを検討する。(active_decorator gemを導入しているのでそれを使う)
  • 複雑なActiveRecordクエリがあり、再利用できそうな場合はQueryObjectパターンを検討する。(rails-patterns gemを導入しているのでそれのQuery機能を使う)
  • Viewにpartialを作る場合はViewComponentを使うことを検討する。
  • 複数のActiveRecordモデルを操作する1つの責務がある時や外部APIとやりとりする処理がある場合にはInteractorオブジェクトパターンを検討する。(interactor gemを導入しているのでそれを使う)
  • 複数のInteractorを実行するような処理がある場合Organizerオブジェクトパターンを検討する。(interactor gemを導入しており、その中にOrganizerの機能があるので使う)

Files:

  • test/system/training_completion_test.rb
test/**/*

⚙️ CodeRabbit configuration file

test/**/*: # Test

  • TestCase名は英語で書く。
  • どうしても避けられない時以外にsystem testでsleepは使わない。

Unit Test

model, helper, decorator, view_componentについてはメソッドを追加した場合は必ず対応したUnit TestのTestCaseを1つは書く。

Files:

  • test/system/training_completion_test.rb
🧠 Learnings (3)
📚 Learning: 2025-09-04T01:39:22.261Z
Learnt from: Miya096jp
PR: fjordllc/bootcamp#9102
File: app/controllers/mentor/buzzes_controller.rb:0-0
Timestamp: 2025-09-04T01:39:22.261Z
Learning: fjordllc/bootcamp プロジェクトでは、更新処理の成功時の通知メッセージについて、I18n を使用せずに日本語文字列を直接記述する方針で一貫性を保っている。

Applied to files:

  • test/system/training_completion_test.rb
📚 Learning: 2025-06-29T03:44:15.179Z
Learnt from: hirokiej
PR: fjordllc/bootcamp#8740
File: app/helpers/reports_helper.rb:56-64
Timestamp: 2025-06-29T03:44:15.179Z
Learning: このプロジェクト(fjordllc/bootcamp)では、ja.ymlファイルで一部の単語や文章のみI18n対応されているが、多くのテキストは日本語でハードコーディングされており、完全な国際化対応は行われていない。新しい機能でもI18n対応は不要と判断される。

Applied to files:

  • test/system/training_completion_test.rb
📚 Learning: 2025-07-23T20:42:19.974Z
Learnt from: jun-kondo
PR: fjordllc/bootcamp#0
File: :0-0
Timestamp: 2025-07-23T20:42:19.974Z
Learning: fjordllc/bootcampプロジェクトでは、hタグ(見出し)の文言は日本語でハードコーディングする方針が確立されており、I18n対応は行わない。例:app/views/welcome/logo.html.slimでh2、h3タグが日本語でハードコーディングされている。

Applied to files:

  • test/system/training_completion_test.rb
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build_and_test

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
app/controllers/reports/unchecked_controller.rb (1)

4-4: 定数の重複を確認してください。

PAGER_NUMBER = 25app/controllers/reports_controller.rb と重複しています。共通の定数として ApplicationController や専用の concern に抽出することを検討してください。

例えば、以下のように共通化できます:

# app/controllers/concerns/paginatable.rb
module Paginatable
  extend ActiveSupport::Concern
  
  PAGER_NUMBER = 25
end

その後、各コントローラで:

class Reports::UncheckedController < ApplicationController
  include Paginatable
  # ...
end
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b7b6f59 and 1cbaf8e.

📒 Files selected for processing (20)
  • app/controllers/api/admin/count_controller.rb (1 hunks)
  • app/controllers/reports/unchecked_controller.rb (1 hunks)
  • app/controllers/reports_controller.rb (0 hunks)
  • app/helpers/meta_tags_helper.rb (2 hunks)
  • app/javascript/stylesheets/lp/blocks/lp/_lp-price.sass (3 hunks)
  • app/javascript/stylesheets/lp/layouts/_l-cards.sass (1 hunks)
  • app/views/home/_unchecked_report_alert.html.slim (1 hunks)
  • app/views/reports/index.html.slim (2 hunks)
  • app/views/welcome/_pricing.html.slim (1 hunks)
  • app/views/welcome/certified_reskill_courses/rails_developer_course/_course_fees.html.slim (4 hunks)
  • app/views/welcome/certified_reskill_courses/rails_developer_course/_course_overview.html.slim (2 hunks)
  • app/views/welcome/index.html.slim (1 hunks)
  • app/views/welcome/law.html.slim (1 hunks)
  • app/views/welcome/pricing.html.slim (2 hunks)
  • app/views/welcome/training.html.slim (2 hunks)
  • config/routes/reports.rb (1 hunks)
  • test/system/admin/campaigns_test.rb (1 hunks)
  • test/system/articles_test.rb (1 hunks)
  • test/system/markdown_test.rb (1 hunks)
  • test/system/reports_practice_filter_test.rb (0 hunks)
💤 Files with no reviewable changes (2)
  • app/controllers/reports_controller.rb
  • test/system/reports_practice_filter_test.rb
✅ Files skipped from review due to trivial changes (2)
  • test/system/admin/campaigns_test.rb
  • app/views/welcome/law.html.slim
🧰 Additional context used
📓 Path-based instructions (2)
**/*.rb

⚙️ CodeRabbit configuration file

**/*.rb: # refactoring

  • まずFat Controllerを避け、次にFat Modelを避ける。
  • Serviceクラスの乱用を避ける。
  • controller concernを作ろうとしたらPORO(Plain Old Ruby Object)やActiveRecordモデルでの実装で代替できないか検討する。

Rails Patterns

  • ViewHelperにメソッドを実装する時にはまずDecoratorパターンを使うことを検討する。(active_decorator gemを導入しているのでそれを使う)
  • 複雑なActiveRecordクエリがあり、再利用できそうな場合はQueryObjectパターンを検討する。(rails-patterns gemを導入しているのでそれのQuery機能を使う)
  • Viewにpartialを作る場合はViewComponentを使うことを検討する。
  • 複数のActiveRecordモデルを操作する1つの責務がある時や外部APIとやりとりする処理がある場合にはInteractorオブジェクトパターンを検討する。(interactor gemを導入しているのでそれを使う)
  • 複数のInteractorを実行するような処理がある場合Organizerオブジェクトパターンを検討する。(interactor gemを導入しており、その中にOrganizerの機能があるので使う)

Files:

  • app/helpers/meta_tags_helper.rb
  • config/routes/reports.rb
  • test/system/markdown_test.rb
  • test/system/articles_test.rb
  • app/controllers/api/admin/count_controller.rb
  • app/controllers/reports/unchecked_controller.rb
test/**/*

⚙️ CodeRabbit configuration file

test/**/*: # Test

  • TestCase名は英語で書く。
  • どうしても避けられない時以外にsystem testでsleepは使わない。

Unit Test

model, helper, decorator, view_componentについてはメソッドを追加した場合は必ず対応したUnit TestのTestCaseを1つは書く。

Files:

  • test/system/markdown_test.rb
  • test/system/articles_test.rb
🧠 Learnings (1)
📚 Learning: 2025-09-12T01:00:58.452Z
Learnt from: Miya096jp
PR: fjordllc/bootcamp#9102
File: app/views/mentor/buzzes/edit.html.slim:1-0
Timestamp: 2025-09-12T01:00:58.452Z
Learning: app/views/mentor/buzzes/edit.html.slim では `- title` と `- set_meta_tags` の両方が正しく設定されており、タイトルは削除されていない。変更内容はメタディスクリプションの追加のみ。

Applied to files:

  • test/system/articles_test.rb
🧬 Code graph analysis (1)
app/controllers/reports/unchecked_controller.rb (2)
app/controllers/reports_controller.rb (1)
  • index (16-19)
app/controllers/concerns/authentication/login_helpers.rb (1)
  • admin_or_mentor_login? (27-29)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build_and_test
🔇 Additional comments (25)
app/javascript/stylesheets/lp/layouts/_l-cards.sass (2)

4-7: レスポンシブなギャップの追加は適切です。

ブレークポイントごとに適切なギャップ値が設定されており、レイアウトの改善として問題ありません。


38-38: ビューポート幅を考慮したmax-widthの設定は適切です。

calc(100vw - 2rem)により、小画面でのはみ出しを防ぐ実装になっています。

test/system/markdown_test.rb (1)

18-20: テストのスキップは意図的なものです。

markdown-it-purifierの問題が解決されるまで一時的にスキップしており、メッセージも明確です。問題が解決したら、このテストを有効化することを忘れないようにしてください。

app/controllers/api/admin/count_controller.rb (1)

10-10: 研修完了ユーザーを除外するフィルタ条件の追加は適切です。

training_completed_at: nilの追加により、研修完了済みのユーザーをアクティブユーザー数から除外する実装になっており、他のフィルタ条件と一貫性があります。

app/views/welcome/_pricing.html.slim (2)

17-22: 料金表示の更新と税込表示の追加は適切です。

月額料金が32,780円に更新され、税込表示も明示的に追加されています。ユーザーにとって分かりやすい表示になっています。


26-26: 法人利用料金の更新も適切です。

個人向け料金の改定に合わせて、法人利用料金も109,780円(税込)に更新されており、一貫性があります。

config/routes/reports.rb (1)

4-6: 未チェック日報用のルーティング追加は適切です。

名前空間を使った構造で、RESTfulな設計になっています。reports_unchecked_index_pathというルートヘルパーが利用可能になります。

app/views/home/_unchecked_report_alert.html.slim (1)

10-10: ルートヘルパーの使用への変更は良い改善です。

ハードコードされたパス'/reports/unchecked'からreports_unchecked_index_pathへの変更により、ルート構造の変更に対して保守性が向上しています。

app/views/reports/index.html.slim (3)

23-25: コントローラーパスベースのナビゲーション判定への変更は良い改善です。

params[:unchecked]ではなくcontroller_pathを使用することで、ルーティング構造に基づいた堅牢な実装になっています。新しいReports::UncheckedControllerとの統合も適切です。


26-26: フィルターフォームの条件分岐の更新は適切です。

controller_pathを使用した一貫性のある条件判定になっています。


47-48: メンター向け一括操作機能の条件付きレンダリングは適切です。

mentor_login?controller_pathの組み合わせにより、適切な権限チェックと画面判定が行われています。

app/views/welcome/certified_reskill_courses/rails_developer_course/_course_fees.html.slim (3)

23-26: 受講料のタイトル簡略化と価格更新は適切です。

「受講料 + 教材費」から「受講料」への変更により表示がシンプルになり、価格も786,720円(税込)に正しく更新されています。


51-58: 給付金額の更新は正確です。

786,720円の80%である629,376円が正しく計算・表示されています。


69-76: 自己負担額の更新は正確です。

786,720円 - 629,376円 = 157,344円の計算が正しく反映されています。

app/views/welcome/certified_reskill_courses/rails_developer_course/_course_overview.html.slim (1)

76-88: 変更内容を承認します。

受講料の更新と税込表記の追加、および教材費の変動に関する注記の追加は適切です。用語の統一(授業料→受講料)も改善として評価できます。

app/javascript/stylesheets/lp/blocks/lp/_lp-price.sass (1)

12-81: スタイル変更を承認します。

価格表示の強化と税込表記の強調のための変更は適切です。新しい .is-total モディファイアと関連するコンポーネントブロック(.lp-price__per-person.lp-price__tax.lp-price__total-value)の追加により、価格表示の柔軟性が向上しています。レスポンシブ対応も適切に実装されています。

app/controllers/reports/unchecked_controller.rb (1)

7-11: 実装を承認します。

未確認レポートの専用コントローラへの分離は適切です。アクセス制御、ページネーション、共有ビューの使用も正しく実装されています。

test/system/articles_test.rb (1)

268-268: テストの更新を承認します。

メタディスクリプションのテストアサーションが新しい価格(32,780円(税込))を正しく反映しています。

app/views/welcome/pricing.html.slim (2)

6-6: メタディスクリプションの更新を承認します。

新しい価格(32,780円(税込))を反映したメタディスクリプションは適切です。


48-57: 価格表示の更新を承認します。

一般利用の月額料金(32,780円)および法人向け料金(109,780円)への更新は正しく反映されています。税込表記も明確です。

app/helpers/meta_tags_helper.rb (2)

10-10: デフォルトメタタグの更新を承認します。

新しい価格(32,780円(税込))を反映したディスクリプションは適切です。OGPとTwitterカードでも正しく使用されます。


34-34: Welcomeメタタグの更新を承認します。

welcome_meta_tags メソッドのディスクリプションも新しい価格に正しく更新されています。

app/views/welcome/index.html.slim (2)

2-2: メタディスクリプションの更新を承認します。

新しい価格(32,780円(税込))への更新は適切です。


3-5: formrun.js の参照はこのファイルのみです。フォーム機能がこのスクリプトに依存していないか、動作確認をお願いします。

app/views/welcome/training.html.slim (1)

303-327: 価格表示の再構築を承認します。

法人向け価格表示の改善は適切です:

  • コンテナサイズの拡大(is-md → is-lg)により、情報の視認性が向上しています
  • 「1名につき月額」の明示により、料金体系がより明確になっています
  • 一般利用との比較リンクの追加は、ユーザーにとって有用です
  • 新しい価格(109,780円(税込)および32,780円(税込))が正しく反映されています

変更は _lp-price.sass のスタイル更新とも整合性が取れています。

@zamami zamami force-pushed the bug/profile-hash-display branch from 1cbaf8e to b2fb43f Compare October 3, 2025 05:06
@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Oct 3, 2025

@karlley
お疲れ様です!
こちらのレビュー依頼をお願いしたいのですがいかがでしょうか?
軽めの実装ですので、お手隙であればお願いしたいです。
ご検討よろしくお願いします!

@karlley
Copy link
Copy Markdown
Contributor

karlley commented Oct 5, 2025

@zamami
お疲れ様です!
レビュー承知しました😄
一週間ほどお時間いただきたいので問題ないでしょうか?

@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Oct 6, 2025

@karlley
ありがとうございます!
はい問題ありません。

もし、お仕事の都合でレビューが厳しくなりましたらいつでも気軽にご連絡ください。

@karlley
Copy link
Copy Markdown
Contributor

karlley commented Oct 6, 2025

@zamami
お気遣いありがとうございます!
よろしくお願いします😄

@karlley karlley self-requested a review October 6, 2025 21:01
Copy link
Copy Markdown
Contributor

@karlley karlley left a comment

Choose a reason for hiding this comment

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

@zamami

お待たせしました!
修正内容に関する確認です。

研修終了ユーザー(id: 782540538)でログインしたところ研修終了手続きのデフォルト値が設定されていませんでした。

研修終了手続き

そのため、動作確認手順での確認ができていない状況です。

  • コミットログでもデフォルト値の修正は削除されている(コミットid: b2fb43f)
  • デフォルト値の設定の修正(コミットid: b2fb43f)をローカルで追加するとデフォルト値が設定された

上記2点を踏まえて以下を教えていただきたいです。
issueを見る限り以下の2点の修正が当PRには含まれるという認識で正しいでしょうか?

・user.satisfaction がnilだった場合「未入力」と表示させる。(もしくは空白?)
・研修終了手続きフォームにデフォルト値を入れる(「どちらでもない」にチェックを入れたほうがいい?)

もし、修正の方針がどちらか片方のみに変更になっている場合、経緯と詳細を教えてください。

お手数おかけしますが確認お願いいたします🙇‍♂️

@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Oct 15, 2025

@karlley
返信遅くなって申し訳ありません。
こちら、前回の開発MTGに参加しデモを行ったところ、komagataさんからデフォルト値は削除した方がいいとご指摘を受けたので削除いたしました。
なのでこちら、ハッシュ展開のような表示の修正のみで大丈夫です。

PRの概要を修正しますので少々お待ちください。

@zamami zamami force-pushed the bug/profile-hash-display branch from b2fb43f to 4838efa Compare March 25, 2026 15:05
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 28, 2026

🚀 Review App

URL: https://bootcamp-pr-9222-fvlfu45apq-an.a.run.app

Basic認証: fjord / (ステージングと同じ)
PR更新時に自動で再デプロイされます。

@zamami zamami force-pushed the bug/profile-hash-display branch from 96aff81 to 648935d Compare March 28, 2026 07:51
@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Mar 28, 2026

@karlley
お久しぶりです。連絡が遅くなってすいません。
PRの概要を修正いたしました。

すでにチーム開発の進捗が20ptに達成されていて恐縮なのですが、もしお手隙でしたら引き続きレビューをお願いしたです。
他の方に依頼できるので気軽にお断りしていただいても構いません🙏

Copy link
Copy Markdown
Contributor

@karlley karlley left a comment

Choose a reason for hiding this comment

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

@zamami
お久しぶりです!
レビュー対応ありがとうございました🙇‍♂️

description内で気になった点です。

  • Railsのアップデートに伴い、アプリ起動はforeman start -f Procfile.dev からbin/dev に変更になりましたので修正お願いします。
  • u = User.find_by!(login_name: 'kensyuowata’) のシングルクオーテーションが大文字の になっているので修正お願いします。

コード内で気になった箇所はコード内にコメントしています。
追加されたテストについて一部分からない部分がありましたので質問を追加しています。
口頭での説明が難しいようでしたらペアワークでの認識合わせも可能ですのでお気軽にご相談ください!
お手数ですがご対応よろしくお願いします🙏

@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Mar 31, 2026

@karlley
レビュー&コメントありがとうございます!
諸々修正いたします。
もしご都合よろしければペアワークさせていただきたいです。
夜でしたらいつでも都合合わせられます。

zamami added 2 commits March 31, 2026 18:54
・テスト名を日本語に修正
・rebase mainで不要に追加してしまったテストを削除
@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Apr 7, 2026

@karlley
修正しました!
今回は、要素で絞っているのでassert_textではなく、assert_selectorを使うことにしました。d436fe3
ご確認よろしくお願いします。

Copy link
Copy Markdown
Contributor

@karlley karlley left a comment

Choose a reason for hiding this comment

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

@zamami
ご対応ありがとうございました!
良さそうなのでApproveさせていただきます!

@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Apr 8, 2026

@karlley
レビューありがとうございました!
またよろしくお願いします!

@zamami
Copy link
Copy Markdown
Contributor Author

zamami commented Apr 10, 2026

@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.

2 participants