みなさんこんにちは!私は自動的にタグが作成されるシステムを作成中で、誰でもタグを作成できるようにしたいと考えています。
この件について:
- タグはトピック作成の形で作成されます
- 投稿で言及されたタグが存在しない場合、デフォルトでは無視されます
私の目標は、自動タグ付けの仕組みを作ることです。例えば、#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
ご協力ありがとうございます!