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!