こんにちは。
管理者がユーザー検索からユーザーを表示しようとすると、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