按组+信任级别组合自动生成标题的最佳实践

你好!

我已经修改了插件以满足我的需求,我想分享我所做的更改、我目前的工作流程以及一些问题/建议。


1. 我的修改

文件路径和内容:

文件: app/jobs/scheduled/update-all-titles.rb

# frozen_string_literal: true

module AddTitleBasedOnTrustLevel
  class UpdateTitles < ::Jobs::Scheduled
    every SiteSetting.update_title_frequency.hours

    def execute(args)
      group_titles = JSON.parse(SiteSetting.group_trust_level_titles || "{}")

      User.find_each do |user|
        # 跳过管理员和版主,不更新他们的头衔
        next if user.admin? || user.moderator?

        group_id = user.primary_group_id
        next unless group_id

        group = Group.find_by(id: group_id)
        next unless group

        group_key = group.name.downcase
        tl = user.trust_level

        titles = group_titles[group_key]
        next unless titles.is_a?(Array)
        next unless tl >= 1 && tl <= 4

        new_title = titles[tl]
        next unless new_title.present?

        user.update_column(:title, new_title) if user.title != new_title
      end
    end
  end
end

文件: config/settings.yml

plugins:
  add_title_based_on_trust_level_enabled:
    default: false
    client: true
  group_trust_level_titles:
    default: '{"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"], "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]}'
    type: string
    client: true
    multiline: true
  update_title_frequency:
    default: 24
    type: integer

2. 我的测试方法

我目前通过rails console手动运行此逻辑来检查该功能是否正常工作。它确实会根据我的要求批量更新用户头衔。


3. 插件设置条目问题

/admin/plugins 页面上没有此插件的“设置”按钮。目前,要更改配置,我必须直接访问 /admin/plugins/add-title-based-on-trust-level/settings
是否有办法在插件页面上显示设置按钮或链接以便于访问?


4. 我的当前设置

这是我当前的 JSON 配置(我也会附上一张截图):

{
  "designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
  "developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}


5. 问题 / 可能的改进

  • 这种方法(遍历每个用户并更新他们的头衔)是否存在性能风险,如果用户很多的话?是否有更好的最佳实践?
  • 关于优化,无论是针对计划任务还是管理员设置 UI,有什么建议吗?
  • 我的方法是否存在任何不安全或有问题的地方,我需要注意吗?

非常感谢您的辛勤工作和这个有用的插件!
如果您有任何建议,或者您计划将来改进组+信任级别头衔配置,我很想听听您的想法。

2 个赞