Toller Fund, @thoka!
Das Problem liegt hier:
users gibt {"username_lower" => User-Objekt } zurück.
Wenn name jedoch nicht kleingeschrieben wird, existiert users[name] nicht.
Fix:
if user = users[name.downcase]
...
elsif group = groups[name.downcase]
...
Oder besser: Kleinschreibe alle Namen am Anfang der Methode, da es dort viele Probleme gibt. groups macht sauber .where("lower(name) IN (?)", @names.map(&:downcase)), aber Funktionen wie visible_group_ids_for_allowed_check, topic_allowed_group_ids, mentionable_group_ids und members_visible_group_ids verwenden alle where(name: @names), was ebenfalls Probleme mit der Groß-/Kleinschreibung einführt.