Plugin funzionalità di Auto Tagging

Ciao a tutti! Sto creando un sistema in cui i tag vengono generati automaticamente, così ogni persona potrà creare i propri tag!

A questo proposito:

  • I tag vengono creati sotto forma di creazione di un argomento
  • Se non esiste un tag menzionato dalla persona, verrà ignorato di default nel post

Il mio obiettivo era creare un metodo per il tagging automatico, in modo che se #test1 non esiste, venga creato automaticamente e il contenuto elaborato del post venga aggiornato per riflettere il link ai tag, e così via.

Quindi, ho provato alcuni modi per soddisfare questa esigenza e vorrei mostrarveli chiedendovi se esiste un modo migliore per raggiungere il mio obiettivo.

after_initialize do
   DiscourseEvent.on(:post_created) do |post, _, user|
      # Filtra i tag dal testo grezzo (es. #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

Grazie mille per il vostro aiuto!

1 Mi Piace