タググループに新しいタグを割り当てる

特定のカテゴリでユーザーが作成したタグを、指定されたタググループに自動的に割り当てる方法を調べています。検索しましたが、現在利用できるものはありませんでした。

このコードは、私が望むことを行うでしょうか?

enabled_site_setting :auto_tag_to_group_enabled

# プラグイン設定
register_site_setting :auto_tag_to_group_enabled, default: true
register_site_setting :auto_tag_category_name, default: "RestrictedCategory"
register_site_setting :auto_tag_group_name, default: "RestrictedTags"

after_initialize do
  module ::DiscourseAutoTagToGroup
    class Engine < ::Rails::Engine
      engine_name "discourse_auto_tag_to_group"
      isolate_namespace DiscourseAutoTagToGroup
    end
  end

  require_dependency "topic"
  class ::Topic
    after_save :auto_assign_new_tags_to_group, if: :auto_tag_to_group_conditions_met?

    private

    def auto_tag_to_group_conditions_met?
      # プラグインが有効で、トピックにタグがあるか確認
      SiteSetting.auto_tag_to_group_enabled && self.tags.present?
    end

    def auto_assign_new_tags_to_group
      # 設定されたカテゴリとタググループ名を取得
      target_category_name = SiteSetting.auto_tag_category_name
      target_tag_group_name = SiteSetting.auto_tag_group_name

      # カテゴリとタググループを検索
      target_category = Category.find_by(name: target_category_name)
      target_tag_group = TagGroup.find_by(name: target_tag_group_name)

      # カテゴリまたはタググループが見つからない場合は終了
      return unless target_category && target_tag_group
      return unless self.category_id == target_category.id

      # トピック作成のタイムスタンプを取得
      topic_created_at = self.created_at

      self.tags.each do |tag|
        # タグがトピック作成時刻に近い時刻に作成されたか確認
        # 処理遅延を考慮して、短いウィンドウ(例:1分)を許可
        if tag.created_at && tag.created_at >= (topic_created_at - 1.minute)
          # タグがターゲットタググループに既に存在するか確認
          unless TagGroupMembership.exists?(tag_id: tag.id, tag_group_id: target_tag_group.id)
            # タグをタググループに追加
            TagGroupMembership.create!(tag_id: tag.id, tag_group_id: target_tag_group.id)
          end
        end
      end
    end
  end
end

私も同様の要件に遭遇しましたが、解決しましたか?

いいえ。何か思いついたら教えてください。