Ciao!
Ho modificato il plugin per adattarlo alle mie esigenze e vorrei condividere ciò che ho fatto, il mio attuale flusso di lavoro e alcune domande/richieste di consulenza.
1. Le mie modifiche
Percorso e contenuto del file:
File: 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|
# Salta amministratori e moderatori, non aggiornare i loro titoli
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
File: 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. Come ho testato
Attualmente sto eseguendo manualmente questa logica tramite la console di Rails per verificare se la funzione funziona. Aggiorna correttamente i titoli degli utenti in blocco secondo i miei requisiti.
3. Problema di inserimento delle impostazioni del plugin
Non c’è un pulsante “Impostazioni” per questo plugin nella pagina /admin/plugins. Al momento, per modificare la configurazione, devo visitare direttamente /admin/plugins/add-title-based-on-trust-level/settings.
C’è un modo per far apparire il pulsante o il link delle impostazioni nella pagina dei plugin per un accesso più facile?
4. Le mie impostazioni attuali
Questa è la mia attuale configurazione JSON (allegherò anche uno screenshot):
{
"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
"developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}
5. Domande / Possibili miglioramenti
- Questo approccio (iterare su ogni utente e aggiornare il suo titolo) rischia problemi di prestazioni se ci sono molti utenti? Esiste una migliore best practice per questo?
- Qualche consiglio sull’ottimizzazione, sia per il job pianificato che per l’interfaccia utente delle impostazioni di amministrazione?
- C’è qualcosa di insicuro o problematico nel mio metodo di cui dovrei essere cauto?
Grazie mille per il tuo grande lavoro e per questo utile plugin!
Se hai suggerimenti, o se prevedi di migliorare la configurazione dei titoli per gruppo+livello di fiducia in futuro, mi piacerebbe sentire i tuoi pensieri.

