# 徽章图片丢失问题

**URL:** https://meta.discourse.org/t/badge-image-missing-issue/214455
**Category:** Support
**Created:** [2022年一月10日 22:00 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455 "2022-01-10T22:00:09Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![f1r4s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/f1r4s/32/245347_2.png) [@f1r4s](https://meta.discourse.org/u/f1r4s)
#### Post date: [2022年一月10日 22:00 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/1 "2022-01-10T22:00:09Z")

</div>

你好，

我在徽章部分遇到了问题。我修改了一些徽章并添加了一些图片；6个月后，我恢复了一个备份，除了徽章部分，一切都正常工作。我尝试以安全模式登录并禁用所有插件……但问题仍然一样，如何恢复具有默认名称和图片的徽章部分？

错误显示：

```plaintext
消息（已报告2条）

NoMethodError (未定义方法 `url' 用于 nil:NilClass)
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

```

---

<div class="post-metadata">

### Author: ![cocococosti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cocococosti/32/231474_2.png) [@cocococosti](https://meta.discourse.org/u/cocococosti)
#### Post date: [2022年一月11日 19:19 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/2 "2022-01-11T19:19:21Z")

</div>

> [@f1r4s](#):
>
> 我恢复了一个备份，除了徽章部分，其他一切都正常工作

其他图片是否已正确恢复？

您是否确定在备份中包含了上传的文件？

 ![backup_options](https://global.discourse-cdn.com/meta/original/3X/3/4/34cd8f4db8e3eac9e7acd8686e2238327c4f1891.png)

您是否使用 s3 来存储您的上传文件？如果不是，您能否进入容器，然后转到 `/shared/uploads/default/original/1X`，您在那里有文件吗？

---

<div class="post-metadata">

### Author: ![f1r4s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/f1r4s/32/245347_2.png) [@f1r4s](https://meta.discourse.org/u/f1r4s)
#### Post date: [2022年一月11日 19:24 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/3 "2022-01-11T19:24:20Z")

</div>

是的，我不使用 s3，并且我总是包含附件图片进行备份……

我现在正在寻找如何重置徽章图片？

---

<div class="post-metadata">

### Author: ![cocococosti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cocococosti/32/231474_2.png) [@cocococosti](https://meta.discourse.org/u/cocococosti)
#### Post date: [2022年一月11日 19:47 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/4 "2022-01-11T19:47:17Z")

</div>

开箱即用，据我所知，没有办法“重置徽章图像”。

我首先会检查缺失图像的徽章是否至少已恢复。如果您查看 `badges` 表，可以在 `image_upload` 字段中获取图像的 ID。然后，您可以使用该 ID 在 `uploads` 表中获取图像的 URL，如下所示：

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

```

URL 看起来像这样：`/uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg`，然后您可以从中提取文件名，在本例中为 `c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg`。

然后，您可以使用 `find` 或任何您喜欢的方法在服务器上检查图像是否存在

```plaintext
cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg

```

一旦您确定图像已恢复到正确的路径，那么您可以继续调试，因为问题出在其他地方。

备份中的 Discourse 版本与您正在恢复到的 Discourse 版本差异太大？

不过，也许社区中的其他人对此有更多了解。

---

<div class="post-metadata">

### Author: ![f1r4s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/f1r4s/32/245347_2.png) [@f1r4s](https://meta.discourse.org/u/f1r4s)
#### Post date: [2022年一月11日 19:52 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/5 "2022-01-11T19:52:21Z")

</div>

好的，但我如何知道缺少徽章的网址或名称？

我找不到如何知道缺少网址或徽章图像名称的方法。

---

<div class="post-metadata">

### Author: ![cocococosti](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cocococosti/32/231474_2.png) [@cocococosti](https://meta.discourse.org/u/cocococosti)
#### Post date: [2022年一月11日 19:57 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/6 "2022-01-11T19:57:19Z")

</div>

请按照此处的说明 [Discourse Data Explorer](https://meta.discourse.org/t/data-explorer-plugin/32566) 安装数据探索器插件，您可以使用它来检查 badges 表。请重点关注您的自定义徽章。

---

<div class="post-metadata">

### Author: ![f1r4s](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/f1r4s/32/245347_2.png) [@f1r4s](https://meta.discourse.org/u/f1r4s)
#### Post date: [2022年一月11日 19:59 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/7 "2022-01-11T19:59:08Z")

</div>

我已安装，但未找到徽章表；

这是我在打开管理员配置文件时收到的错误：

```plaintext
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

```

---

<div class="post-metadata">

### Author: ![Ihor\_Shevchenko](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ihor_shevchenko/32/252652_2.png) [@Ihor\_Shevchenko](https://meta.discourse.org/u/Ihor_Shevchenko)
#### Post date: [2022年八月13日 10:01 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/8 "2022-08-13T10:01:21Z")

</div>

你好 @f1r4s  
我遇到了同样的问题。你解决这个问题了吗？

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2023年一月18日 11:34 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/9 "2023-01-18T11:34:53Z")

</div>

我相信这已在此主题中得到解决：

> [@Profile preference 404 error/ admin profile not work](https://meta.discourse.org/t/profile-preference-404-error-admin-profile-not-work/216640):
>
> I have this issue since a month; but i try several time upgrade; migrate the database to new one; etc… with no fix. It was in admin user; i try to migrate the admin data to new one; same issue… i cannot open the preference or profile and i get 404; i see same issue but none explain how to fix and it’s quit old since 3 years. same issue and they mention it’s fixed but too old and none explaine how to fix.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2023年一月18日 11:35 UTC](https://meta.discourse.org/t/badge-image-missing-issue/214455/10 "2023-01-18T11:35:00Z")

</div>


