да, я думаю, что в этом и проблема. LLM считает, что код плохо обрабатывает список записей, отсюда и ошибка 500.
Окей, похоже, мы имеем дело с Contribute > Bug?
Я думаю, что это баг, и, скорее всего, его можно исправить просто, но я не совсем понимаю новые категории. (И лично я не стал бы отправлять код, если чувствую, что не до конца в нём разбираюсь.)
Есть ещё вопрос о том, не является ли текущее состояние вашей базы данных следствием какого-то другого бага, который тоже требует исправления.
Поскольку в этой теме участвовали только три человека, было бы полезно создать новую тему с отчётом об ошибке — если модератор пожелает объединить или перекатегоризировать её, он всегда сможет это сделать.
Ок, я на самом деле не видел топик Contribute > Bug и, насколько я помню, никогда там не писал. К тому же у меня, скорее всего, не тот уровень квалификации, чтобы точно определить, баг это или нет.
Кстати, да, ты, вероятно, прав: могли быть какие-то исторические проблемы с БД, которые спровоцировали эту уязвимость.
Хотя есть необходимость снова получить доступ к админ-аккаунту — и чем скорее, тем лучше, — я полагаю, что это пока в руках богов, но хотя бы источник проблемы мы, возможно, нашли, так что будем надеяться!
Спасибо за помощь. ![]()
Кроме того, я задумываюсь, не даст ли это оснований лишить пользователя статуса администратора и перевести его, например, на уровень модератора — возможно, это обойдёт проблему при входе.
Я, пожалуй, проверю это, предварительно сделав резервную копию.
Меня беспокоит потеря данных или поломка чего-то, что я не смогу проверить, если всё будет выглядеть нормально и не вылетят ошибки. ![]()
Пожалуйста. Было интересно.
Скорее всего, есть какой-то небольшой трюк в SQL, который позволил бы удалить эту дублирующую запись, но лично я бы не стал делать это легкомысленно.
Кроме того, по мнению llm, можно использовать консоль Rails, чтобы обновить эту десятисрочную функцию на Ruby и сделать её более надёжной. Это, по крайней мере, должно быть безопасно, потому что после перезапуска реальный код Ruby будет перечитан с диска.
Я хочу сохранить это, чтобы закрыть вкладку — непротестированный код от LLM, представленный здесь как monkey patch для применения в rails-консоли на работающей системе, но также содержащий предложенное LLM решение для этой уязвимости, которая приводит к ошибке:
# Повторно открываем CurrentUserSerializer, чтобы переопределить сломанный метод
class CurrentUserSerializer < ApplicationSerializer
def has_new_upcoming_changes
last_visited = object.custom_fields["last_visited_upcoming_changes_at"]
# Извлекаем строку, если она была закэширована как массив предроадером
last_visited = last_visited.first if last_visited.is_a?(Array)
return false if last_visited.blank? && object.created_at < Discourse.site_creation_date + 1.hour
cutoff = last_visited.present? ? Time.zone.parse(last_visited.to_s) : object.created_at
UpcomingChangeEvent.added.not_backfilled.where("created_at > ?", cutoff).exists?
end
end
Отзыв прав администратора
Действия применяются к исходному заблокированному аккаунту администратора:
-
Отзыв прав администратора + выдача прав модератора = ошибка входа / та же самая ошибка.
-
Отзыв прав модератора
- первый вход (без ошибки), но зависает на этапе двухфакторной аутентификации / загрузки (крутящееся колесо)
- оставил на ~10 минут (на сервере наблюдался рост нагрузки при входе), но всё равно ничего не изменилось
- однако во вкладке «Активные» пользователи показывает, что пользователь вошёл Xm назад, хм

- попытка второго входа в другом (инкогнито) окне — успешно!
Хорошо, так что это выглядит как обходной путь для администратора, которому, возможно, нужно читать сообщения/чаты и т. д., но по сути проблему это не решает.
Далее, используя другой аккаунт администратора, выдаю Grant Admin (права администратора) вошедшему в систему бывшему аккаунту администратора
- Пока пользователь вошёл в систему, приходит сообщение об обновлении, указывающее на успех.
- Обновляю страницу, и снова появляется ошибка.
Я не могу написать в теме «Git hang», так как она была закрыта 28 сентября, но, заметив несколько минут назад, что всё стало работать медленнее, я подумал: «О, наверное, git снова сломался и вызывает проблемы», и что же, в этот момент downdetector.com как раз показывал большой всплеск сбоев на GitHub. ![]()