Olá!
Modifiquei o plugin para atender às minhas necessidades e gostaria de compartilhar o que fiz, meu fluxo de trabalho atual e algumas perguntas/solicitações de conselhos.
1. Minhas Modificações
Caminho e conteúdo do arquivo:
Arquivo: 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|
# Pula administradores e moderadores, não atualiza seus títulos
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
Arquivo: 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. Como Testei
Atualmente estou executando essa lógica manualmente via console do Rails para verificar se a função funciona. Ela atualiza os títulos dos usuários em massa de acordo com meus requisitos.
3. Problema de Entrada de Configurações do Plugin
Não há um botão de “Configurações” para este plugin na página /admin/plugins. No momento, para alterar a configuração, preciso visitar /admin/plugins/add-title-based-on-trust-level/settings diretamente. Existe uma maneira de fazer o botão ou link de configurações aparecer na página de Plugins para facilitar o acesso?
4. Minhas Configurações Atuais
Esta é minha configuração JSON atual (anexarei uma captura de tela também):
{
"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
"developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}
5. Perguntas / Possíveis Melhorias
- Essa abordagem (iterar por cada usuário e atualizar seu título) corre o risco de problemas de desempenho se houver muitos usuários? Existe uma melhor prática para isso?
- Algum conselho sobre otimização, seja para o job agendado ou para a interface de configurações do administrador?
- Há algo inseguro ou problemático no meu método com o qual eu deva ter cuidado?
Muito obrigado pelo seu ótimo trabalho e por este plugin útil!
Se você tiver alguma sugestão, ou se planeja melhorar a configuração de títulos de grupo + nível de confiança no futuro, adoraria ouvir suas opiniões.

