Plugin de función de etiquetado automático

¡Hola a todos! Estoy creando un sistema donde las etiquetas se generan automáticamente, para que cualquier persona pueda crearlas.

Sobre este tema:

  • Las etiquetas se crean en forma de creación de temas.
  • Si no existe una etiqueta que la persona mencionó, se ignorará por defecto en la publicación.

Mi objetivo era crear una forma de etiquetado automático, de modo que si #test1 no existe, se cree automáticamente y se actualice el contenido cocinado de la publicación para actualizar el enlace a las etiquetas, y así sucesivamente.

Así que probé algunas formas de cumplir con este requisito, y me gustaría mostrarles mi enfoque y preguntarles si hay una mejor manera de lograr mi objetivo.

after_initialize do
   DiscourseEvent.on(:post_created) do |post, _, user|
      # Pasando por las etiquetas de categoría (#test:item1)
      tags = post.raw.split(' ').select { |t| t =~ /#/ && !t.include?(':') }
      tags.each do |t|
        tName = t.gsub('#', '')
        Tag.create_or_find_by(name: tName)
      end

      postAnalyzer = PostAnalyzer.new(post.raw, post.topic_id)
      cookedRaw = postAnalyzer.cook(post.raw)

      post.cooked = cookedRaw
      post.save

      post.publish_change_to_clients!(:revised, reload_topic: true)
   end
end

¡Agradezco su ayuda!

1 me gusta