自动标记功能插件

大家好!我正在创建一个系统,让标签可以自动生成,这样每个人都可以创建标签!

关于这件事:

  • 标签是以创建主题的形式生成的
  • 如果帖子中提到的标签不存在,默认情况下将被忽略

我的目标是创建一种自动标记的方法:如果 #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 个赞