创建用户-标签关联插件

您可以使用一个简单的插件来完成此操作。

您需要做什么

该插件需要执行以下操作:

  1. 添加一个名为 known_tags 的用户自定义字段,它是一个字符串列表。

  2. 在用户个人资料中添加一个界面,供用户编辑 known_tags。我认为没有必要为此添加一个全新的个人资料选项卡,但您可以这样做。如果您不希望用户自己编辑,只需将其设置为仅管理员可编辑,然后进入用户个人资料并根据您的 CSV 文件进行更新。

  3. 添加一个事件挂钩,该挂钩使用 PostCreator 中的 before_create_postpost_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 个赞