徽章收藏夹对某些用户不起作用——他们会弹出“FAILED”的提示

我遇到了一个用户无法切换收藏的问题。我在网上找到了一些关于此错误的帖子和拉取请求,但它们是两年前的,并且合并请求已经到位。所以这似乎是另一个问题。

并非所有用户都这样,但该用户有两个徽章收藏。每个徽章都有多个已完成项。当我点击收藏时,它只会显示一个“失败”的弹出窗口。

Chrome 浏览器中的控制台显示,我们的 URL /user_badges/17307/toggle_favorite 返回 400 错误。

有什么修复此问题的想法吗?在应用程序或浏览器中都无法正常工作。

类似主题:"FAILED" error selecting Favorite badges

但是,点击两次对此错误无效。

@Josiah_Philipsen :slight_smile:

你最终弄清楚这个问题了吗?

可能有一个原因。供参考,我是 Roblox DevForum 上的用户,运行的是 v3.0.3 版本,不是管理员,遇到了此处描述的问题。我在那里写了一篇简短的文章,试图自己解决,但我将复制粘贴相关部分:

很久以前,当我只有单个徽章时,我能够选择我最喜欢的徽章,但现在我有了堆叠的副本,我再也无法取消选择它们了,所以也许是因为在你收藏了徽章之后又获得了更多副本,因为每个徽章都是独一无二的,无论你得到多少重复项?这是我目前的推理,但当然,由于无法访问实际的 Discourse 安装,我无法证明这一点。

我很久以前收藏了 Great TopicGood Topic 徽章,当时我只有单个副本,但现在我分别获得了 2 个和 4 个。当我尝试取消收藏时,会收到通用的 FAILED 响应。其他尚未收藏徽章的用户可以随意收藏和取消收藏,这表明此问题是由已收藏的相同类型徽章的添加引起的,并且这些副本计入你的总收藏数,因此某个断言失败了。

查看此版本的 toggle_favorite,唯一与徽章数量相关的断言是:

if !user_badge.is_favorite &&
     user_badges.select(:badge_id).distinct.where(is_favorite: true).count >=
       SiteSetting.max_favorite_badges
  return render json: failed_json, status: 400
end

我最初忽略了这一点,因为这里的 user_badge.is_favorite 应该是 true,但现在我开始认为,由于额外的副本,它们不被视为已收藏……

顺便说一句,如果这在更新的版本中已修复,我很抱歉重新提出这个问题,但那里的管理员正在努力解决,而且一直没有结果,所以我在这里试图引起注意,以便他们更容易修复它或升级 Discourse。

1 个赞