NoMethodError (не определен метод `id' для #<Guardian…

У меня уже несколько дней эта проблема. Всё вроде работает, но я точно не знаю, что происходит «под капотом». Стоит ли мне беспокоиться или что-то предпринять? Не связано ли это с попыткой удаления анонимного поста?

Discourse был обновлён примерно 10 часов назад…

Сообщение (16 раз зафиксировано)

NoMethodError (неопределённый метод `id' для #<Guardian::AnonymousUser:0x00007f5fe7ae9ea0>)
lib/guardian.rb:624:in `is_my_own?'
lib/guardian/post_guardian.rb:262:in `can_delete_post_action?'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:387:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:233:in `call'

Трассировка стека

lib/guardian.rb:624:in `is_my_own?'
lib/guardian/post_guardian.rb:262:in `can_delete_post_action?'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:230:in `format_like_user'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `block in format_likes_users'
activerecord (7.0.7) lib/active_record/relation/delegation.rb:88:in `each'
activerecord (7.0.7) lib/active_record/relation/delegation.rb:88:in `each'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `map'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:236:in `format_likes_users'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:160:in `post_reactions_users'
actionpack (7.0.7) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'

Окружение

HTTP HOSTS: foorumi.katiska.eu

Я могу ошибаться, но похоже, что пользователь в режиме анонимности испытывает трудности с удалением поста?

Я вполне уверен, что такого случая не было. Я бы поставил, что это какой-то автоматический процесс, происходящий в фоновом режиме, и я тоже не могу этого понять.

На моём форуме анонимные посты появляются крайне редко, и даже тогда это делали обычные пользователи. Есть небольшая вероятность, что я удалил какие-то старые и нерелевантные темы, но не помню, чтобы там были анонимы. Да, мой форум настолько малотрафиковый, что я могу полагаться на свою память больше, чем на SQL :rofl:

У меня был один пользователь, который по каким-то причинам не подтвердил email, и система заблокировала его аккаунт несколько дней назад. Всё, что он делал — ставил лайки, больше ничего. И теперь у меня есть ощущение (извините, я не могу дать более точной информации), что ошибка начала появляться примерно в то же время.

Это каким-то образом связано с функцией реакций в Discourse, поэтому получение лайков может иметь значение.

Как им удалось взаимодействовать, не подтвердив сначала свой адрес электронной почты и не активировав учётную запись?

Хороший вопрос.

Я установил плагин Disable Email Verification for Discourse Plugin, но в тот момент он был отключён. Не может ли это как-то создать уязвимость? Но всё же… Я не соблюдаю обычные правила, потому что у меня нет проблем со спамом (одно из преимуществ, когда ты часть языкового меньшинства…), поэтому я сразу присваиваю уровень доверия TL1 после регистрации, что тоже может что-то нарушить?

Так… есть ли где-то место, с которого можно начать поиск? И самый важный вопрос: рухнет ли мир, если я ничего не сделаю?

Это может быть связано, по крайней мере, с автоматическим TL1, а также с отключением проверки электронной почты. У меня это неоднократно случалось с одним и тем же пользователем:

id: 606
username: saja
name: Saja
created_at: 2023-10-28 14:34:13 UTC
trust_level: 1
last_seen_at: 
last_emailed_at:

2.11., 28.10., 12.10. и 27.9. Странно, что в логе администратора для этого пользователя не отображаются никакие IP-адреса. При удалении всех остальных неактивированных аккаунтов IP-адреса отображаются.

Похоже, что это как-то связано с настройкой allow_anonymous_likes.

Я немного поэкспериментировал, чтобы проверить, смогу ли я воспроизвести ту же ошибку: включил анонимный режим, поставил несколько лайков/реакций, а затем удалил их или посты — ошибка не появилась. Также я отключил allow_anonymous_likes в середине процесса, и конфликта не возникло — просто стало невозможно удалять их. Настройка post undo action window mins тоже работала корректно.

Пока неясно. :thinking:

Привет, извините, что проблема может быть связана с моим плагином. Не могли бы вы попробовать его отключить и посмотреть, решит ли это проблему? У меня пока не так много времени, чтобы заняться этим, но если дело действительно в моём плагине, пожалуйста, дайте знать — я обязательно разберусь. Я хочу оказывать пользователям моего плагина максимальную поддержку.

У меня он включён здесь, и проблем нет, кроме тех, что явно указаны в этой теме. (Хотя у меня нет автоматического TL1, как у вас).