Si alguien se encuentra con esto y estaba tan perdido como yo, comparto mi código a continuación, ya que logré que funcionara como se pretendía. No modifiqué ningún archivo. Simplemente creé un nuevo archivo plugin.rb y coloqué lo siguiente dentro:
# name: noms
# about: Permite a los usuarios en Modo Anónimo cambiar sus nombres de usuario
# version: 0.1
require_dependency 'guardian'
require_dependency 'guardian/user_guardian'
class ::Guardian
end
module ::UserGuardian
def can_edit_username?(user)
return false if SiteSetting.sso_overrides_username?
return true if is_staff?
return false if SiteSetting.username_change_period <= 0
return true if is_anonymous?
is_me?(user) && ((user.post_count + user.topic_count) == 0 || user.created_at > SiteSetting.username_change_period.days.ago)
end
def can_edit_name?(user)
return false unless SiteSetting.enable_names?
return false if SiteSetting.sso_overrides_name?
return true if is_staff?
return true if is_anonymous?
can_edit?(user)
end
end
Esto anula la clase user_guardian.rb en el núcleo de Discourse para permitir que los usuarios cambien el nombre de usuario y el nombre de sus cuentas de usuario anónimas.
Si comparas lo que tengo aquí con lo que hay en user_guardian.rb en el núcleo de Discourse, verás que hay un montón de otra cosa con la que no necesité hacer nada, así que la dejé intacta. Todo lo que necesitaba era editar esos dos métodos can_edit_username y can_edit_name cambiando algunos valores de retorno de false a true, y pude lograr lo que necesitaba.
Ciertamente, se podrían realizar mejoras y es probable que haya mejores prácticas que pude deducir leyendo los enlaces en este hilo y en otros lugares, pero si eres completamente nuevo en Ruby como yo y solo quieres modificar algo muy sencillo en el núcleo, este es un ejemplo minimalista y funcional de lo que necesitas hacer.
Muchas gracias a las personas en este hilo por su paciencia conmigo y por sus ánimos y ayuda. En especial a @merefield, quien realmente me ha ayudado en otro hilo en el pasado.