自動タグ付け機能プラグイン

みなさんこんにちは!私は自動的にタグが作成されるシステムを作成中で、誰でもタグを作成できるようにしたいと考えています。

この件について:

  • タグはトピック作成の形で作成されます
  • 投稿で言及されたタグが存在しない場合、デフォルトでは無視されます

私の目標は、自動タグ付けの仕組みを作ることです。例えば、#test1 が存在しない場合は自動的に作成し、投稿のクックド(HTML 化された内容)を更新してタグへのリンクを反映させます。

そこで、この要件を満たすいくつかの方法を試してみたので、共有させてください。もっと良い方法があれば教えてください。

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