Forma de datos de callback: category_id vs category_slug

Podría estar equivocado, pero parece que los datos devueltos por un callback ‘post’ incluyen category_slug pero no category_id, mientras que los datos devueltos por un callback ‘topic’ incluyen category_id pero no category_slug.

Si ese es el caso (y no me estoy perdiendo alguna configuración), sería deseable que ambos callbacks estandarizaran el uso de category_id o category_slug, o que devolvieran ambos.

También sería excelente si ambos tipos incluyeran parent_category_id y parent_category_slug cuando provienen de un post o tema en una subcategoría. Actualmente, ambos proporcionan category_id, lo cual no indica si se trata de una categoría o una subcategoría.

1 me gusta

¿Existe alguna intención de actualizar los webhooks para que siempre incluyan tanto category_id como category_slug, independientemente de si el webhook es para una ‘publicación’ o un ‘tópico’?

La información actual de la devolución de llamada de ‘publicación’ es subóptima porque no hay una forma confiable de determinar a qué categoría pertenece… ya que (si entiendo correctamente) category_slug no tiene que ser único. Si tienes varias categorías diferentes, cada una con tres subcategorías con los mismos slugs (porque necesitas que la navegación de subcategorías se vea igual para el usuario), no puedes saber en qué subcategoría se realizó la ‘publicación’ solo con el slug.

No soy desarrollador de Ruby, pero me pregunto si hay un error en la clase post_serializer:

def include_category_id?
    @add_title
  end

¿No debería ser:

def include_category_id?
    topic&.category_id.present?
end

He creado un PR para mostrar este cambio. Puede ser una idea descabellada, pero podría ayudar a encontrar la verdadera solución…

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

2 Me gusta

Alternativamente, si no hay ningún problema con post_serializer, pero el problema es que los webhooks de ‘post’ no devuelven un category_id…

¿no se podría agregar el siguiente código a web_hook_post_serializer.rb:

  def include_category_id?
    true
  end

(Al igual que ya existe un método similar para include_topic_title?)…

Desafortunadamente, no podemos realizar estos cambios nosotros mismos, ya que tenemos una cuenta alojada de pago en Discourse.

Sí, esto funciona. Lo he añadido:

Como cliente alojado, lo recibirás la próxima vez que se despliegue tu foro.

6 Me gusta