Callback データの形状:category_id と category_slug

もしかしたら間違っているかもしれませんが、‘post’ コールバックで返されるデータには category_slug は含まれていますが category_id は含まれておらず、一方、‘topic’ コールバックで返されるデータには category_id は含まれていますが category_slug は含まれていないように見えます。

もしその通りであれば(どこかで設定を見落としているわけではないと仮定して)、両方のコールバックで category_id または category_slug のどちらかに統一するか、両方を返すようにしていただけると大変助かります。

また、サブカテゴリ内の投稿やトピックからアクセスする場合、両方のタイプに parent_category_idparent_category_slug が含まれているとさらに素晴らしいでしょう。現在、両方とも category_id を提供していますが、それがカテゴリそのものかサブカテゴリなのかを示す情報がありません。

「いいね!」 1

ウェブフックを、‘投稿’ 用か’トピック’ 用かに関わらず、常に category_id と category_slug の両方を含めるように更新する予定はありますか?

現在の’投稿’ のコールバック情報は最適ではありません。カテゴリを正確に特定する方法がないからです(私の理解が正しければ、category_slug は一意である必要がないためです)。複数のカテゴリがあり、それぞれに同じスラッグを持つ 3 つのサブカテゴリがある場合(ユーザーにとってサブカテゴリのナビゲーションが同じように見える必要があるため)、スラッグだけでは’投稿’ がどのサブカテゴリで行われたかを判断できません。

私は 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