Olá a todos! Estou criando um sistema no qual as tags são geradas automaticamente, para que qualquer pessoa possa criar tags!
Sobre isso:
- As tags são criadas na forma de criação de tópicos
- Se não houver uma tag mencionada pela pessoa, ela será ignorada por padrão na postagem
Meu objetivo era criar uma maneira de etiquetagem automática, então se #test1 não existir, criá-lo automaticamente e atualizar o conteúdo cozido da postagem para atualizar o link das tags e assim por diante.
Então, tentei algumas formas de atender a essa necessidade, então gostaria de mostrar a vocês e perguntar se há uma maneira melhor de alcançar meu objetivo.
after_initialize do
DiscourseEvent.on(:post_created) do |post, _, user|
# Passando por tags de categoria (#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
Agradeço sua ajuda!