¡Buen hallazgo @thoka!
El problema está aquí
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.