Données de rappel : category_id vs category_slug

Je pourrais me tromper, mais il semble que les données renvoyées par un callback ‘post’ contiennent category_slug mais pas category_id, tandis que celles renvoyées par un callback ‘topic’ contiennent category_id mais pas category_slug.

Si c’est bien le cas (et que je ne passe pas à côté d’une configuration quelque part), il serait préférable que les deux callbacks se standardisent soit sur category_id, soit sur category_slug, ou qu’ils renvoient les deux.

Ce serait également excellent si les deux types incluaient parent_category_id et parent_category_slug lorsqu’il s’agit d’un post ou d’un topic dans une sous-catégorie. Pour l’instant, les deux fournissent category_id, ce qui n’indique pas s’il s’agit d’une catégorie ou d’une sous-catégorie.

1 « J'aime »

Compte-tenu de l’intention de mettre à jour les webhooks pour qu’ils incluent toujours à la fois category_id et category_slug, indépendamment du fait que le webhook concerne un ‘post’ ou un ‘topic’ ?

Les informations de rappel actuelles pour les ‘posts’ sont sous-optimales car il n’existe aucun moyen fiable de déterminer à quelle catégorie ils appartiennent… car (si je comprends bien) category_slug n’a pas besoin d’être unique. Si vous avez plusieurs catégories différentes, chacune avec trois sous-catégories ayant les mêmes slugs (car vous devez que la navigation des sous-catégories ait le même aspect pour l’utilisateur), vous ne pouvez pas savoir dans quelle sous-catégorie le ‘post’ a été effectué uniquement grâce au slug.

Je ne suis pas développeur Ruby, mais je me demande s’il y a un bug dans la classe post_serializer :

def include_category_id?
    @add_title
  end

Cela ne devrait-il pas être :

def include_category_id?
    topic&.category_id.present?
end

J’ai créé une PR pour illustrer ce changement. Cela peut sembler fou, mais cela pourrait aider à trouver la véritable solution…

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

2 « J'aime »

Sinon, s’il n’y a pas de problème avec post_serializer, mais que le problème vient du fait que les webhooks ‘post’ ne renvoient pas de category_id…

ne pourrait-on pas ajouter le code suivant à web_hook_post_serializer.rb :

  def include_category_id?
    true
  end

(De la même manière qu’une méthode similaire existe déjà pour include_topic_title?)…

Malheureusement, nous ne pouvons pas apporter nous-mêmes ces modifications, car nous avons un compte hébergé payant sur Discourse.

Oui, cela fonctionne. Je l’ai ajouté :

En tant que client hébergé, vous le recevrez lors du prochain déploiement de votre forum.

6 « J'aime »