f1r4s
(Eddie)
1
你好,
我在徽章部分遇到了问题。我修改了一些徽章并添加了一些图片;6个月后,我恢复了一个备份,除了徽章部分,一切都正常工作。我尝试以安全模式登录并禁用所有插件……但问题仍然一样,如何恢复具有默认名称和图片的徽章部分?
错误显示:
消息(已报告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
1 个赞
其他图片是否已正确恢复?
您是否确定在备份中包含了上传的文件?
您是否使用 s3 来存储您的上传文件?如果不是,您能否进入容器,然后转到 /shared/uploads/default/original/1X,您在那里有文件吗?
1 个赞
f1r4s
(Eddie)
3
是的,我不使用 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 个赞
请按照此处的说明 Discourse Data Explorer 安装数据探索器插件,您可以使用它来检查 badges 表。请重点关注您的自定义徽章。
1 个赞
f1r4s
(Eddie)
7
我已安装,但未找到徽章表;
这是我在打开管理员配置文件时收到的错误:
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
你好 @f1r4s
我遇到了同样的问题。你解决这个问题了吗?