اكتشاف رائع @thoka!
المشكلة هنا
users تُرجع {"username_lower" => كائن مستخدم }
ومع ذلك، إذا لم يتم تحويل name إلى أحرف صغيرة، فإن users[name] غير موجود.
الحل:
if user = users[name.downcase]
...
elsif group = groups[name.downcase]
...
أو الأفضل: قم بتحويل جميع الأسماء إلى أحرف صغيرة في بداية الدالة، لأن هناك العديد من المشكلات فيها. فبينما تتعامل groups بشكل جيد مع .where("lower(name) IN (?)", @names.map(&:downcase))، فإن الدوال مثل visible_group_ids_for_allowed_check، وtopic_allowed_group_ids، وmentionable_group_ids، وmembers_visible_group_ids تستخدم جميعها where(name: @names)، مما يُدخل مشكلات تتعلق بحساسية الأحرف أيضًا.