バッジ画像の表示されない問題

こんにちは。

バッジセクションに問題があります。いくつかのバッジを変更し、そこに画像をいくつか追加しました。6か月後にバックアップを復元したところ、バッジセクションを除いてすべて正常に機能しました。セーフモードでログインし、すべてのプラグインを無効にしようとしましたが、問題は同じままです。バッジセクションをデフォルトの名前と画像で復元するにはどうすればよいですか?

エラーが表示されます。

メッセージ(2件報告あり)

NoMethodError (nil:NilClass に対して未定義のメソッド `url' です)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
app/controllers/application_controller.rb:484:in `serialize_data'
app/controllers/badges_controller.rb:30:in `index'
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/enforce_hostname.rb:23: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/array_serializer.rb:89:in `block in _serializable_array'
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'

環境

HTTP HOSTS: site.com
「いいね!」 1

他の画像は正しく復元されましたか?

バックアップにアップロードを含めましたか?

アップロードの保存にS3を使用していますか?そうでない場合は、コンテナに入り、「/shared/uploads/default/original/1X」にファイルがありますか?

「いいね!」 1

はい、S3は使用しておらず、バックアップには常に添付画像を含めていました。

現在探しているのは、バッジ画像をリセットする方法です。

標準では、「バッジ画像をリセットする」方法はないと認識しています。

まず、画像が欠落しているバッジが少なくとも復元されていることを確認します。badges テーブルを確認すると、image_upload フィールドで画像の ID を取得できます。次に、その ID を uploads テーブルで使用して、画像の URL を取得します。次のようになります。

select url from uploads where id = <badge-upload-id>

URL は /uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg のようになり、そこからファイル名、この場合は c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg を抽出できます。

次に、サーバーで find または好みの方法を使用して画像が存在することを確認できます。

cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

画像が正しいパスに復元されたことを確認したら、問題は別の場所にあるため、デバッグを続けることができます。

バックアップからの Discourse のバージョンと、復元先の Discourse のバージョンが大きく異なりますか?

コミュニティの他の誰かがこれについてもっと知っているかもしれませんが。

「いいね!」 1

完璧ですが、不足しているバッジのURLまたは名前を知る方法は?

不足しているURLまたはバッジ画像の名前を知る方法が見つかりません。

Data Explorer プラグインをインストールするには、Discourse Data Explorer の手順に従ってください。このプラグインを使用して、badges テーブルを検査できます。カスタムバッジに焦点を当ててください。

「いいね!」 1

インストールしましたが、バッジテーブルが見つかりませんでした。

管理者プロフィールを開くと、次のエラーが表示されます。

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/users_controller.rb:92: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/enforce_hostname.rb:23: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

Hi @f1r4s
私も同じ問題に直面しました。この問題を解決できましたか?

これが解決されたトピックだと思います。

「いいね!」 1