Плагин функции автоматической разметки тегов

Всем привет! Я создаю систему, в которой теги создаются автоматически, чтобы каждый пользователь мог создавать теги!

По этому поводу:

  • Теги создаются в форме создания темы
  • Если тега, который упомянул пользователь, не существует, он по умолчанию игнорируется в посте

Моя цель — создать способ автоматического тегирования, чтобы, если #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

Буду благодарен за вашу помощь!

1 лайк