你好!
我已经修改了插件以满足我的需求,我想分享我所做的更改、我目前的工作流程以及一些问题/建议。
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,有什么建议吗?
- 我的方法是否存在任何不安全或有问题的地方,我需要注意吗?
非常感谢您的辛勤工作和这个有用的插件!
如果您有任何建议,或者您计划将来改进组+信任级别头衔配置,我很想听听您的想法。

