콜백 데이터 구조: category_id와 category_slug 비교

잘못 알고 있는 것일 수도 있지만, ‘post’ 콜백이 반환하는 데이터에는 category_slug는 있지만 category_id가 없고, ‘topic’ 콜백이 반환하는 데이터에는 category_id는 있지만 category_slug가 없는 것으로 보입니다.

만약 이것이 사실이라면(어딘가에 설정을 놓치고 있는 것이 아니라면), 두 콜백 모두 category_id 또는 category_slug 중 하나로 표준화하거나, 둘 다 반환하도록 개선되었으면 좋겠습니다.

또한, 하위 카테고리에 있는 게시물이나 주제에서 온 경우라면 두 유형 모두에 parent_category_id와 parent_category_slug가 포함되었으면 합니다. 현재 두 데이터 모두 category_id를 제공하고 있는데, 이것이 카테고리인지 하위 카테고리인지 구별할 수 없습니다.

1개의 좋아요

웹훅이 'post’든 'topic’이든 상관없이 항상 category_id 와 category_slug를 모두 포함하도록 업데이트할 계획이 있나요?

현재 ‘post’ 콜백 정보는 최적화되어 있지 않습니다. 어떤 카테고리에 속하는지 판단할 수 있는 신뢰할 만한 방법이 없기 때문입니다… (제가 이해한 바로는) category_slug는 고유할 필요가 없기 때문입니다. 사용자가 동일한 하위 카테고리 내비를 보길 원하기 때문에, 동일한 슬러그를 가진 세 개의 하위 카테고리를 가진 여러 카테고리가 있는 경우, 슬러그만으로는 'post’가 어느 하위 카테고리에서 이루어졌는지 구별할 수 없습니다.

저는 Ruby 개발자는 아니지만 post_serializer 클래스에 버그가 있는 것 같아 궁금합니다:

def include_category_id?
    @add_title
  end

다음처럼 되어야 하지 않을까요:

def include_category_id?
    topic&.category_id.present?
end

이 변경 사항을 보여주기 위해 PR을 만들었습니다. 미친 소리일 수 있지만, 진정한 해결책을 찾는 데 도움이 될 수도 있습니다…

https://github.com/discourse/discourse/compare/master...danielmcquillen:master

2개의 좋아요

또는, post_serializer에 문제가 없고 ‘post’ 웹훅이 category_id를 반환하지 않는 것이 문제라면…

web_hook_post_serializer.rb에 다음 코드를 추가할 수 있지 않을까요:

  def include_category_id?
    true
  end

(include_topic_title?에 대한 유사한 메서드가 이미 존재하는 것처럼요)…

불행히도 우리는 Discourse에서 유료 호스팅 계정을 사용하고 있기 때문에 이러한 변경 사항을 직접 수행할 수 없습니다.

네, 작동합니다. 추가했습니다:

호스팅 고객인 경우, 다음에 포럼이 배포될 때 해당 업데이트를 받게 됩니다.

6개의 좋아요