설명
API로 활성 사용자를 가져올 때 \/admin/users/list/active.json``의 일부 페이지에서 HTTP 500 오류가 반환됩니다.
우회 방법
문제가 발생하는 페이지를 건너뛰면 다른 페이지는 문제없이 가져올 수 있습니다.
오류
HTTP 500을 유발한 서버 오류:
\``ruby
NoMethodError: undefined method ‘[]’ for nil (NoMethodError)
main_user_record\[:silenced_till\]
^^^^^^^^^^^^^^^^
from app/models/user.rb:1335:in `silenced_till’
from active_record/attribute_methods/query.rb:48:in `public_send’
from active_record/attribute_methods/query.rb:48:in `query_attribute’
from active_model/attribute_methods.rb:273:in `silenced_till?’
from app/serializers/admin_user_list_serializer.rb:51:in `include_silenced_till?’
from active_model/serializer.rb:375:in `include?’
…
```
시스템 로그에 따르면, 2025년 10월 말에 Discourse v3.5.1에서 v3.5.2로 업그레이드한 후 이러한 오류가 발생하기 시작했습니다. 해당 행은 Silenced user can circumvent it entering anonymous mode - #12 by pangbo 에서 논의된 바와 같이 FIX: Delegate silenced_till from anonymous user to main user account - Pull Request #32416 - discourse/discourse - GitHub 에서 도입되었습니다.
해결책
저는 Ruby 전문가가 아니지만, v3.5.2 변경 사항 이후로 활동하지 않은 사용자를 포함하는 API JSON 페이지에서 발생하는 것으로 보아, 이 변경 사항과 관련된 일부 경계 조건을 처리하는 데이터베이스 마이그레이션이 누락된 것으로 추정됩니다.