Всем привет! Я создаю систему, в которой теги создаются автоматически, чтобы каждый пользователь мог создавать теги!
По этому поводу:
- Теги создаются в форме создания темы
- Если тега, который упомянул пользователь, не существует, он по умолчанию игнорируется в посте
Моя цель — создать способ автоматического тегирования, чтобы, если #test1 не существует, он создавался автоматически, а затем обновлялось содержимое поста для обновления ссылок на теги и так далее.
Поэтому я попробовал несколько подходов для решения этой задачи и хотел бы показать их вам, а также спросить, есть ли лучший способ достичь моей цели.
after_initialize do
DiscourseEvent.on(:post_created) do |post, _, user|
# Перебираем теги категорий (#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
Буду благодарен за вашу помощь!