Al investigar Private Topics Plugin - #109 by thoka, descubrí que una mención a un usuario en una categoría restringida no se reporta cuando el nombre de usuario contiene letras mayúsculas.
Si menciono @SomeUser, el editor solicita /composer/mentions.json?names[]=SomeUser&topic_id=10728
y en el resultado el nombre de usuario se devuelve en minúsculas, sin que user_reasons esté establecido.
Una consulta para el nombre de usuario en minúsculas devuelve "user_reasons": {"someuser":"category"}.
Si uso letras minúsculas para los nombres de usuario en el editor, se muestran advertencias para personas sin derechos suficientes.
Si se utiliza la autocompletación proporcionada por el editor, los nombres de usuario en minúsculas escritos se reemplazan por nombres en mayúsculas y, por lo tanto, no se reportan.
users devuelve {"username_lower" => objeto de usuario }
Sin embargo, si name no está en minúsculas, users[name] no existe.
Solución:
if user = users[name.downcase]
...
elsif group = groups[name.downcase]
...
O mejor: convierte todos los nombres a minúsculas al inicio del método, ya que hay muchos problemas allí. groups maneja bien .where("lower(name) IN (?)", @names.map(&:downcase)), pero funciones como visible_group_ids_for_allowed_check, topic_allowed_group_ids, mentionable_group_ids y members_visible_group_ids usan where(name: @names), lo que también introduce problemas de sensibilidad a mayúsculas y minúsculas.