ユーザーとタグの関係を作成するプラグイン

簡単なプラグインで実現できます。

実施内容

プラグインは以下のことを行う必要があります。

  1. known_tags という名前のユーザーカスタムフィールド(文字列のリスト)を追加します。

  2. ユーザープロファイルに known_tags を編集できるインターフェースを追加します。これのために完全に新しいプロファイルタブを追加する必要はないと思いますが、必要であれば追加しても構いません。ユーザー自身が編集しないようにしたい場合は、管理者のみが編集できるようにし、CSVファイルに基づいてユーザープロファイルに直接入力してください。

  3. PostCreatorbefore_create_post または post_created イベントを使用するイベントフックを追加し、トピックのタグに基づいて投稿に追加したいコンテンツを追加します。

実装方法

パート1とパート2は、以下のトピックにある他のモデルのサンプルプラグインと非常によく似ています。類推で理解できるか試してみてください。どうしても行き詰まったら、ヒントを求めに来てください。

パート3もプラグインの plugin.rb ファイルに入れます。以下のような形になります。

on(:post_created) |post, opts, user|
  if post.is_first_post? && post.topic.tags.present?
     user_ids = UserCustomField.where(name: 'known_tags', value: post.topic.tags).pluck(:user_id)
     usernames = User.where(id: user_ids).pluck(:username)
     new_raw = post.raw + "something something #{usernames}"
     PostRevisor.new(post).revise!(
      user,
      {
        raw: new_raw,
        edit_reason: "some reason"
      },
      skip_validations: true,
      bypass_bump: true
    )
  end
end

まずはご自身で試してみてください。どうしても行き詰まったらお手伝いします。自分で理解しようと努力している形跡があれば、より協力する気になります :slight_smile:

「いいね!」 2