用户名中的大写字母导致编辑器中可达提及检查失效

找得好 @thoka

问题出在这里

users 返回的是 {"username_lower" => User 对象}

但如果 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_checktopic_allowed_group_idsmentionable_group_idsmembers_visible_group_ids 这样的函数都使用了 where(name: @names),这同样会引入大小写敏感的问题。

3 个赞