你好,
在使用 admin_detailed_user_serializer 时遇到问题,当管理员尝试从用户搜索中查看用户时,会导致 500 错误。当向 https://mycommunity/admin/users/2000020409.json 发起 GET API 调用时,也会出现 500 错误。下面是从日志中提取的异常信息。大约有 50% 的用户出现了此错误。我尝试比较数据库中工作正常和不工作用户的区别,但无法找出问题所在。我怀疑是在从另一个系统迁移用户时,我所做的某些操作导致了这个问题。
以下是我的数据迁移步骤:
- 手动向
users、user_profiles、user_emails和user_stats表插入数据。 - 最初所有用户的电子邮件都是“someid@example.com”。
- 然后我更新
user_email表,为用户设置正确的电子邮件。 - 在此之后,我注意到这些用户中有 50% 在管理员用户列表中无法查看。但是,如果在个人资料列表中右键单击他们的名字,可以弹出个人资料卡,然后单击其中可以正常进入个人资料。可以对个人资料进行更新,但如果尝试将某人设为管理员,则会出现我下面列出的相同 500 错误。
有人知道这段代码在检查什么吗?我猜某些用户可能缺少关键数据,导致了 500 异常。有什么猜测吗?我是 Discourse 新手,任何建议都将不胜感激。
谢谢!
app/serializers/admin_user_list_serializer.rb:95:in `time_read'
(eval):27:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
activerecord (7.0.4.3) lib/active_record/relation/delegation.rb:88:in `each'
activerecord (7.0.4.3) lib/active_record/relation/delegation.rb:88:in `each'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:73:in `serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:53:in `as_json'
app/serializers/admin_detailed_user_serializer.rb:166:in `similar_users'
(eval):72:in `_fast_attributes'
active_model_serializers (0.8.4