Привет!
Я модифицировал плагин под свои нужды и хотел бы поделиться тем, что я сделал, своим текущим рабочим процессом, а также задать несколько вопросов и запросить совет.
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. Вопросы / Возможные улучшения
- Несет ли этот подход (перебор всех пользователей и обновление их титулов) риск проблем с производительностью, если пользователей очень много? Есть ли лучшая практика для этого?
- Любые советы по оптимизации, как для запланированной задачи, так и для интерфейса настроек администратора?
- Есть ли что-то небезопасное или проблемное в моем методе, о чем мне следует знать?
Большое спасибо за вашу отличную работу и этот полезный плагин!
Если у вас есть какие-либо предложения или если вы планируете улучшить конфигурацию титулов на основе группы и уровня доверия в будущем, я с радостью выслушаю ваши мысли.

