こんにちは!
私のニーズに合わせてプラグインを修正しましたので、行ったこと、現在のワークフロー、およびいくつか質問/アドバイスを共有したいと思います。
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の最適化に関するアドバイスはありますか?
- 私の方法に、注意すべき安全でない点や問題点はありますか?
素晴らしい仕事とこの便利なプラグインに心から感謝いたします!
提案があれば、または将来的にグループ+信頼レベルのタイトル設定を改善する予定があれば、ぜひご意見をお聞かせください。

