我这个问题已经存在一个月了;但我尝试了几次升级;将数据库迁移到新的数据库;等等……都没有解决。
之前是在管理员用户那里,我尝试将管理员数据迁移到新的用户那里;同样的问题……我无法打开偏好设置或个人资料,并收到 404 错误;
我看到了类似的问题,但没有人解释如何修复,而且这个问题已经存在三年了。
同样的问题,他们提到已经修复,但太久了,没有人解释如何修复。
我这个问题已经存在一个月了;但我尝试了几次升级;将数据库迁移到新的数据库;等等……都没有解决。
之前是在管理员用户那里,我尝试将管理员数据迁移到新的用户那里;同样的问题……我无法打开偏好设置或个人资料,并收到 404 错误;
我看到了类似的问题,但没有人解释如何修复,而且这个问题已经存在三年了。
同样的问题,他们提到已经修复,但太久了,没有人解释如何修复。
这是什么意思?
您在使用任何插件吗?
您在 /logs 中看到任何内容吗?
我禁用了所有插件并恢复了数据库,但错误仍然存在,我不知道该怎么办……所以我来这里发帖求助。
您需要提供一些信息供我们参考。
日志显示此内容
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
您是否尝试过禁用徽章,看看这是否能解决问题?
是的,我试过了,但还是同样的问题
这似乎是您之前发布过的相同问题。我将在此链接其他主题,以防其中有更多信息可以帮助人们弄清楚出了什么问题:
我不确定我是否完全理解。问题是您无法访问管理屏幕吗?
是的,我之前提到过一个月前我曾遇到过这个问题,并尝试了多种方法来修复它,但都失败了。
我可以看到管理屏幕,但无法打开管理个人资料或偏好设置,它会给我一个 404 错误。
您认为这可能是因为自定义徽章?其他拥有自定义徽章的用户是否受到影响?如果是,您能否撤销自定义徽章或将其完全删除?
我不知道如何撤销或删除它们……有什么指南可以尝试一下吗?
在偏好设置或个人资料中我无法访问(404错误);在徽章部分(500错误);
错误代码:500错误
也许我可以通过命令行执行恢复基本徽章的操作?
消息
未捕获的 [object Object]
网址:https://site.com/assets/vendor-3c473d73e5222f7710764282fcc17d73997b7fbd37e0c12afc050b80693ceee2.js
行号:36
列号:180628
窗口位置:https://site.com/admin/badges
堆栈跟踪
环境
HTTP 主机:site.com
我认为没有简单的“重置”方法可以用于徽章,即使是从 rails 控制台操作。
你在另一个主题中推荐的数据浏览器查询进行到哪一步了?你是否找到了导致问题的徽章图片?
我没有,如果可能的话,你可以看一下吗?
经过一些试验,我可以重现这个故障(或者类似的情况)。我尝试使用控制台在 Badge 表的 image_upload_id 中插入一个“null”值,但它却用 0 填充了。这导致我的测试站点像您描述的那样被锁定。
我通过将所有 image_upload_id 更改为“1”来“修复”它。这让我重新进入了我的个人资料和徽章部分,但我现在必须手动将所有徽章换回仅图标等。
要检查您的问题是否类似,您可以访问您的数据浏览器并创建一个新查询,然后粘贴以下内容(并运行):
Select name, image_upload_id
FROM badges b
Order By id desc
我也发现,控制台需要的是“nil”而不是“null”才能正常工作。![]()
这修复了我损坏的徽章,而无需手动逐个处理:
Badge.where('image_upload_id=0').find_each do |b|
b.image_upload_id = nil
b.save
end
由于不知道您的问题具体是什么,我不能确定这是否能以同样的方式修复您的问题——不过也许“全部更改为 nil”可以解决您的问题?
你好 @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
我应该选择其他东西,还是你更愿意自己进去看看?
数据浏览器查询无法解决问题,但它提供的信息可能会有帮助。![]()
如果您乐意使用 rails 控制台,可以尝试以下方法将这些 17 重置为 null:(别忘了以防万一进行备份)
导航到 rails 控制台:
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
希望这能解锁徽章部分和个人资料,以便您可以重新开始。![]()
![]()
知识不被使用和分享就没有价值,哥们!感谢你的时间,哥们……搞定了!