다시 돌아가서 말하자면… 당시 저는 예외를 발생시키는 코드가 실행되지 않기를 바라며 관리자 설정을 변경하려 하고 있었습니다.
하지만 우리가 정말 확인하고 싶은 것은 수정이 필요한 코드 버그가 있는지, 아니면 데이터베이스에 있어서는 안 되는 이상한 값이 있는지입니다. 혹은 둘 다일 수도 있죠.
백트레이스는 app/serializers/current_user_serializer.rb 파일의 이 코드로 이어집니다.
def has_new_upcoming_changes
last_visited = object.custom_fields["last_visited_upcoming_changes_at"]
return false if last_visited.blank? && object.created_at < Discourse.site_creation_date + 1.hour
cutoff = last_visited.present? ? Time.zone.parse(last_visited) : object.created_at
UpcomingChangeEvent.added.not_backfilled.where("created_at > ?", cutoff).exists?
end
데이터 탐색 쿼리를 실행하여 관리자 계정의 last_visited_upcoming_changes_at 값이 무엇인지 확인할 수 있습니다.
SELECT
ucf.id AS custom_field_id,
ucf.user_id,
u.username,
ucf.name,
ucf.value
FROM user_custom_fields ucf
INNER JOIN users u ON u.id = ucf.user_id
WHERE ucf.name = 'last_visited_upcoming_changes_at'
AND u.admin = true
이것이 유용한 결과를 줄 수 있습니다. 제 경우(최근 v2026.7.3으로 업데이트됨)에는 날짜 문자열이었는데, 이것이 정상적인 형태라고 생각합니다.