태그를 편집한 후 /review에서 승인 가능한 게시물을 승인할 때 500 오류 발생 (태그가 문자열이 아닌 객체로 저장됨)

요약

리뷰 대기열(/review)에서 모더레이터가 대기 중인 게시물의 태그를 수정한 후 승인을 클릭하면, 승인 요청이 500 Internal Server Error와 함께 실패합니다.


재현 방법

  1. 리뷰 대기열에 게시물이 있는지 확인합니다(예: 승인이 필요한 사용자/그룹).
  2. /review로 이동합니다.
  3. 대기 중인 항목을 엽니다.
  4. 태그 선택기 UI를 사용하여 태그를 수정합니다.
  5. 승인을 클릭합니다.
  6. 500 응답을 확인합니다.

기대 동작

게시물이 성공적으로 승인되고, 업데이트된 태그가 적용되어야 합니다.


실제 동작

승인이 500 오류와 함께 실패합니다.

예시 요청 패턴:

PUT /review/{id}/perform/approve_post?version={x} → 500 (Internal Server Error)

원인으로 추정되는 사항 (Root Cause)

리뷰 UI에서 태그를 수정한 후, reviewable 페이로드에는 태그 이름 문자열 대신 전체 태그 객체가 저장됩니다.

태그 수정 전:

payload["tags"] = ["tag-one", "tag-two"]

/review에서 태그 수정 후:

payload["tags"] = [
  {"id"=>123, "name"=>"tag-one", "description"=>nil, "count"=>50, ...},
  {"id"=>456, "name"=>"tag-two", "description"=>nil, "count"=>30, ...}
]

승인 액션이 태그를 처리할 때 문자열을 기대하는 것으로 보이지만, 실제로는 해시/객체를 받아 500 오류가 발생합니다.


우회 방법

태그를 이름으로 다시 정규화합니다:

r = ReviewableQueuedPost.find(ID)
r.payload["tags"] = r.payload["tags"].map { |t| t.is_a?(Hash) ? t["name"] : t }
r.save!

1개의 좋아요

보고해 주셔서 감사합니다. 확인해 보겠습니다.

3개의 좋아요

이 문제는 FIX: Cater for reviewable tag payloads that have been saved as names - Pull Request #37477%EC%97%90%EC%84%9C - discourse/discourse - GitHub 수정될 예정입니다. 빠른 버그 보고에 깊이 감사드립니다.

4개의 좋아요

이 주제는 2일 후 자동으로 닫혔습니다. 더 이상 새 답변을 게시할 수 없습니다.