Fix: 新規登録ユーザーに登録前のお知らせが未読表示される不具合を修正 - #327
Conversation
登録時点で last_management_notice_read_at を初期化していなかったため、 新規ユーザーは登録前に公開済みの運営からのお知らせも全て未読としてカウント・ 表示されていた。ユーザー作成時に last_management_notice_read_at を登録時刻で 初期化し、登録前のお知らせは既読扱いになるようにする。 v1スキーマスナップショット(users_show.json)もフィールドの null 許容が 変わったため合わせて更新する。
|
@claude |
|
Claude finished @ippei-shimizu's task in 3m 19s —— View job コードレビュータスクリスト
全体評価修正内容は妥当です。 気になった点1. 新規リクエストスペックの
create(:management_notice, :published, published_at: 3.days.ago)
create(:management_notice, :published, published_at: 1.minute.from_now)のように明示的な def set_published_at
self.published_at = Time.current if status_changed? && published?
endという 現状のテストが green なのは、 old_notice = create(:management_notice, :published)
old_notice.update_column(:published_at, 3.days.ago) # set_published_at の上書きを回避または これは今回のPRで新規に発生した問題ではなく既存の 2. golden_v1 スナップショット更新
3. モデルスペック( 初期化されるケース/明示的な値を上書きしないケースの両方をカバーしており妥当です。 実行できなかったことサンドボックス環境の制約により |
…atで上書きされ検証に効かない問題を修正 ManagementNotice#set_published_at が新規作成時に published_at を Time.current で上書きするため、create時に渡した published_at は無視され テストは作成順序にのみ依存していた。update_column でコールバックを回避し published_at を明示的に固定することで、日時ベースの判定を実際に検証する。
Summary
ManagementNotice)を全て未読として表示・カウントしてしまう不具合を修正Userにbefore_createフックを追加し、last_management_notice_read_atをユーザー登録時刻で初期化する。これにより登録前のお知らせは既読扱いになり、登録後に公開されたお知らせのみ未読として扱われるbefore_createのため新規作成時のみ発火)spec/golden_v1/users_show.json)のlast_management_notice_read_atがnull固定ではなくなったため更新Fixes
Fixes ippei-shimizu/buzzbase#448
Test plan
spec/models/user_spec.rbにlast_management_notice_read_at初期化のモデルスペックを追加spec/requests/api/v1/notifications_management_notice_spec.rbを新規作成し、登録前/登録後のお知らせで index・count の挙動を確認bundle exec rspec(関連spec一式)全て成功bundle exec rubocop変更ファイルすべて指摘なし🤖 Generated with Claude Code