¡Hola!
He modificado el plugin para que se ajuste a mis necesidades y me gustaría compartir lo que hice, mi flujo de trabajo actual y algunas preguntas/solicitudes de asesoramiento.
1. Mis Modificaciones
Ruta y contenido del archivo:
Archivo: 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|
# Omitir administradores y moderadores, no actualizar sus 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
Archivo: 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. Cómo Probé
Actualmente estoy ejecutando esta lógica manualmente a través de la consola de Rails para verificar si la función funciona. Actualiza los títulos de los usuarios en masa según mis requisitos.
3. Problema de Entrada de Configuración del Plugin
No hay un botón de “Configuración” para este plugin en la página /admin/plugins. En este momento, para cambiar la configuración, tengo que visitar /admin/plugins/add-title-based-on-trust-level/settings directamente. ¿Hay alguna manera de que el botón o enlace de configuración aparezca en la página de Plugins para un acceso más fácil?
4. Mi Configuración Actual
Esta es mi configuración JSON actual (adjuntaré una captura de pantalla también):
{
"designers": ["", "Junior Designer", "Designer", "Senior Designer", "Chief Designer"],
"developers": ["", "Junior Developer", "Developer", "Senior Developer", "Tech Lead"]
}
5. Preguntas / Posibles Mejoras
- ¿Este enfoque (iterar sobre cada usuario y actualizar su título) corre el riesgo de problemas de rendimiento si hay muchos usuarios? ¿Existe una mejor práctica para esto?
- ¿Algún consejo sobre optimización, ya sea para el trabajo programado o para la interfaz de usuario de configuración de administración?
- ¿Hay algo inseguro o problemático en mi método con lo que deba tener cuidado?
¡Muchas gracias por tu gran trabajo y por este útil plugin!
Si tienes alguna sugerencia, o si planeas mejorar la configuración de títulos de grupo + nivel de confianza en el futuro, me encantaría escuchar tus ideas.

