プロフィール設定 404エラー/管理者プロフィールが機能しません

1ヶ月前からこの問題が発生していますが、何度もアップグレードやデータベースの移行などを試しましたが、解決しませんでした。

管理ユーザーで発生しており、管理者のデータを新しいユーザーに移行してみましたが、同じ問題が発生しました。設定やプロフィールを開くことができず、404エラーが表示されます。

同様の問題を見つけましたが、3年も前の古いもので、誰も解決方法を説明していません。

これも同じ問題で、修正されたと記載されていますが、非常に古く、誰も解決方法を説明していません。

これはどういう意味ですか?

プラグインを使用していますか?

/logs に何か表示されますか?

「いいね!」 2

すべてのプラグインを無効にし、データベースを復元しましたが、同じエラーが発生しました。まったく見当がつかないので、ここに書き込みました。

何かしらの情報を提供していただく必要があります。

「いいね!」 2

ログに以下が表示されます。

Job exception: getaddrinfo: No address associated with hostname
2:11 am
NoMethodError (undefined method `url' for nil:NilClass) app/models/badge.rb:306:in `image_url' (eval):10:in `_fast_attributes' lib/freedom_patches/ams_include_without_root.rb:54:in `include!' lib/free
メッセージ

NoMethodError (undefined method `url' for nil:NilClass):
  app/models/badge.rb:306:in `image_url'
  (eval):10:in `_fast_attributes'
  lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
  lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
  app/controllers/application_controller.rb:510:in `render_json_dump'
  app/controllers/users_controller.rb:97:in `block (2 levels) in show'
  app/controllers/users_controller.rb:89:in `show'
  app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
  app/controllers/application_controller.rb:387:in `with_resolved_locale'
  lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
  lib/middleware/content_security_policy/middleware.rb:12:in `call'
  lib/middleware/anonymous_cache.rb:356:in `call'
  config/initializers/100-quiet_logger.rb:23:in `call'
  config/initializers/100-silence_logger.rb:31:in `call'
  lib/middleware/request_tracker.rb:198:in `call'

バックトレース

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10: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/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

環境

HTTP HOSTS: site.com

バッジを無効にして、状況が改善するかどうか試しましたか?

はい、試しましたが、問題は同じです

これは以前に投稿されたものと同じ問題のようです。問題解決に役立つ情報がさらに含まれている可能性があるため、他のトピックへのリンクをここに示します。

この問題が、管理画面にアクセスできないということなのか、100%確信が持てません。

以前にもこの問題が発生し、多くの方法で修正を試みましたが、すべて失敗したことをお伝えしました。

管理画面は見えますが、管理者のプロフィールや設定を開くことができず、404エラーが表示されます。

そして、これがカスタムバッジのせいかもしれないと思いますか?カスタムバッジを持つ他のユーザーも影響を受けていますか?もしそうなら、カスタムバッジを無効にするか、完全に削除することはできますか?

それらを無効にする方法や削除する方法がわかりません。試せるガイドはありますか?

管理者のユーザーページからユーザーのバッジを編集/取り消すことができます(アクセスできる場合)。

または、管理エリアのバッジセクションからカスタムバッジを削除することもできます。

[YourSite]/admin/badges

設定またはプロフィールにアクセスできません(404エラー)。バッジセクションでは(500エラー)が発生します。

エラーコード:500エラー

データベースから基本的なバッジを復元することはできますか?

メッセージ

未キャッチ [object Object]
URL: https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
行: 36
列: 180628
ウィンドウの場所: https://site.com/admin/badges

バックトレース



環境

HTTPホスト: site.com

レールコンソールからでも、バッジを簡単に「リセット」できるとは思えません。

他のトピックで推奨されたデータエクスプローラークエリでどこまで進みましたか?問題の原因となっているバッジ画像を特定できましたか?

いいえ、していません。もしよろしければ、ご覧いただけますか?

少し実験した結果、このグリッチ(または類似のもの)を再現することができました。コンソールを使用して、Badge テーブルの image_upload_id に「null」値を挿入しようとしましたが、代わりに 0 が入力されました。これにより、テストサイトが説明されているものと非常に似た方法でロックされました。

「修正」は、すべての image_upload_id を ‘1’ に変更することでした。これにより、プロフィールとバッジセクションに戻ることができましたが、すべてのバッジをアイコンのみに手動で戻す必要がありました。

ご自身の問題が類似しているかどうかを確認するには、データエクスプローラーにアクセスして新しいクエリを作成し、以下を貼り付けて実行できますか?

Select name, image_upload_id
FROM badges b
Order By id desc

コンソールで「null」ではなく「nil」を使用すると、正しく機能することもわかりました。:slightly_smiling_face:

これにより、すべてを手動で処理することなく、壊れたものが修正されました。

Badge.where('image_upload_id=0').find_each do |b|
b.image_upload_id = nil
b.save
end

ご自身の問題の正確な原因がわからないため、それがご自身の問題を同じように修正できるとは断言できませんが、もしかしたら「すべてを nil に変更する」ことで解決するかもしれません。

「いいね!」 1

Hi @jammydodger,

Well, it’s showing me something like this

I see most of the badge NULL except 3 badges have value 17

and after I check the profile again; error still again in the “logs”;

Message

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/application_controller.rb:510:in `render_json_dump'
app/controllers/users_controller.rb:97:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/users_controller.rb:103:in `show_card'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10: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/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

Env

HTTP HOSTS: site.com

Should I select something else or maybe you prefer to have a look inside yourself?
Hi @jammydodger,

それは私にこのようなものを表示します

ほとんどのバッジはNULLですが、3つのバッジは値17を持っています

そして、プロフィールを再度確認した後、ログにエラーが再び発生しました。

Message

NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/application_controller.rb:510:in `render_json_dump'
app/controllers/users_controller.rb:97:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/users_controller.rb:103:in `show_card'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/request_tracker.rb:198:in `call'

Backtrace

app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10: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/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'

Env

HTTP HOSTS: site.com

何か別のものを選択すべきでしょうか、それともご自身で内部を確認していただけますか?

「いいね!」 1

データエクスプローラーのクエリでは問題は解決しませんが、それが提供した情報が役立つかもしれません。:+1:

レールコンソールを使用することに問題がなければ、それらの17をnullにリセットするために以下を試すことができます。(念のためバックアップを忘れずに取ってください)

レールコンソールに移動します。

cd /var/discourse
./launcher enter app
rails c

これを貼り付けます。

Badge.where('image_upload_id=17').find_each do |b|
b.image_upload_id = nil
b.save
end

そして、うまくいけば、これによりバッジセクションとプロフィールがアンロックされ、最初からやり直すことができるはずです。:+1::crossed_fingers:

「いいね!」 2

知識は、それを使用し、共有しない限り、価値はありません。時間を割いてくれてありがとう、ブラザー。修正しました!

「いいね!」 2