¡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!