Функция «Избранное» для значков не работает у некоторых пользователей: появляется всплывающее окно с сообщением «FAILED»

У меня возникла проблема с пользователем, который не может переключать свои избранное. Я нашел несколько статей и запросов на слияние (pull requests), соответствующих этой ошибке, но они датированы двумя годами назад, и запросы на слияние уже были приняты. Похоже, это другая проблема.

Проблема возникает не у всех пользователей, но у этого пользователя есть два избранных за бейджи. Каждый бейдж имеет более одного достижения. Когда я нажимаю на «Избранное», появляется всплывающее окно с сообщением «Ошибка».

В консоли Chrome указано, что от нашего URL /user_badges/17307/toggle_favorite возвращается ошибка 400.

Есть ли какие-либо идеи, как это исправить? Это не работает ни в приложении, ни в браузере.

Похожая тема: "FAILED" error selecting Favorite badges

Однако двойной клик в данном случае не помог.

Привет, @Josiah_Philipsen :slight_smile:

Вам удалось в итоге разобраться в этом вопросе?

Здесь может быть причина. Для справки: я пользователь на Roblox DevForum с версией 3.0.3, не администратор, и сталкиваюсь с описанной здесь проблемой. Я написал там краткое описание, пытаясь разобраться самостоятельно, но вот relevantная часть:

Раньше я мог выбрать свои любимые значки, когда они были у меня по одному, но теперь, когда у меня есть несколько копий, я больше не могу их отменить. Возможно, это связано с получением дополнительных копий после добавления в избранное, так как каждый значок уникален, независимо от количества дубликатов? Это моё текущее предположение, но, конечно, без возможности проверить саму установку Discourse я не могу это доказать.

Я добавил в избранное значки Great Topic и Good 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.