자동 태그 기능 플러그인

안녕하세요 여러분! 태그가 자동으로 생성되는 시스템을 만들고 있습니다. 이렇게 하면 모든 사람이 태그를 생성할 수 있습니다!

관련 사항에 대해 설명드리면 다음과 같습니다:

  • 태그는 주제 생성 시 생성됩니다.
  • 해당 사용자가 언급된 태그가 없으면, 기본적으로 게시물에서 무시됩니다.

제 목표는 자동 태그 생성 방식을 만드는 것이었습니다. 예를 들어 #test1이 존재하지 않으면 자동으로 생성하고, 게시물에 조리된(cooked) 콘텐츠를 새로고침하여 태그 링크 등을 업데이트하는 방식입니다.

이 요구 사항을 수행하기 위해 여러 방법을 시도해 보았고, 제 방법을 보여드리며 더 나은 방법이 있는지 여쭤보고 싶습니다.

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개의 좋아요