Estrutura dos dados do callback: category_id vs category_slug

Posso estar errado, mas parece que os dados retornados por um callback ‘post’ possuem category_slug, mas não category_id, enquanto os dados retornados por um callback ‘topic’ possuem category_id, mas não category_slug.

Se for esse o caso (e eu não estiver ignorando alguma configuração em algum lugar), seria bom que ambos os callbacks padronizassem o uso de category_id ou category_slug, ou então retornassem ambos.

Seria também excelente se ambos os tipos tivessem parent_category_id e parent_category_slug quando provenientes de um post ou tópico em uma subcategoria. Atualmente, ambos fornecem category_id, o que não indica se se trata de uma categoria ou subcategoria.

1 curtida

Existe alguma intenção de atualizar os webhooks para sempre incluir tanto o category_id quanto o category_slug, independentemente de o webhook ser para um ‘post’ ou um ‘tópico’?

As informações atuais do callback de ‘post’ são subótimas porque não há uma maneira confiável de determinar a qual categoria ele pertence… já que (se entendi corretamente) o category_slug não precisa ser único. Se você tiver algumas categorias diferentes, cada uma com três subcategorias com os mesmos slugs (porque precisa que a navegação da subcategoria tenha a mesma aparência para o usuário), não é possível saber em qual subcategoria o ‘post’ foi feito apenas pelo slug.

Não sou desenvolvedor Ruby, mas me pergunto se há um bug na classe post_serializer:

def include_category_id?
    @add_title
  end

Isso não deveria ser:

def include_category_id?
    topic&.category_id.present?
end

Fiz um PR para mostrar essa alteração. Pode ser uma ideia maluca, mas pode ajudar a encontrar a verdadeira solução…

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

2 curtidas

Alternativamente, se não houver problema com o post_serializer, mas o problema for que os webhooks de ‘post’ não estão retornando um category_id

não seria possível adicionar o seguinte código ao web_hook_post_serializer.rb:

  def include_category_id?
    true
  end

(Assim como já existe um método semelhante para include_topic_title?)…

Infelizmente, não podemos fazer essas alterações nós mesmos, pois temos uma conta hospedada paga no Discourse.

Sim, isso funciona. Eu adicionei:

Como cliente hospedado, você receberá a atualização na próxima vez que seu fórum for implantado.

6 curtidas