Метки сотрудников вызывают дублирование индекса тегов

Продолжаем обсуждение из темы ActiveRecord::RecordNotUnique на idx_tag_users_ix1: Как исправить?:

Ошибка была воспроизведена. Я думаю, что я на правильном пути к тому, чтобы разобраться в этой ошибке.

Шаги для воспроизведения

  1. Создайте тег #foo.

  2. Ограничьте использование тега #foo только для сотрудников (Staff).

  3. Создайте группу Bar.

  4. Назначьте группе Bar уведомление типа «Следить» (Watching) для тега #foo.

  5. Добавьте в группу Bar пользователя без привилегий.

  6. Измените его личные настройки уведомлений для тега #foo на «Обычные» (Normal).

  7. Пользователь без привилегий больше не сможет открывать страницу.

Я подозреваю, что происходит именно это, так как ситуация дважды повторялась с разными людьми. Вот как выглядит ошибка: https://oxygen.offdem.net/logs/show/f70207d3affa8967932b9122d2be212b

Возможно, заголовок немного узок. Мне кажется, проблема связана скорее с ограничениями тегов для групп и личными уведомлениями.

У всех новых пользователей теперь есть дублирующая запись, которую необходимо удалить из консоли:

r = TagUser.connection.execute("SELECT user_id, tag_id, count(*) FROM tag_users GROUP BY tag_id, user_id HAVING count(*) > 1")
r.values.each { |uid,tag,_| TagUser.where(user_id: uid, tag_id: tag).last.destroy }

Не уверен, что правильно воспроизвожу проблему…

  • Создать группу тегов
  • Создать тег #staff-tag в группе тегов
  • Установить параметр «Теги видны всем, но использовать их могут только следующие группы» в значение staff

  • Создать группу
  • На странице /manage/tags добавить #staff-tag в список «Слежение»
  • Добавить тестового пользователя (TL2) в группу
  • Убедиться, что для тестового пользователя в разделе «Настройки/Отслеживание» тег #staff-tag находится в списке «Слежение»

  • Перейти на страницу /tags/staff-tag и изменить значок колокольчика на «Обычный»

Кажется, всё работает?

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

Я имел в виду вот эту страницу:

Возможно, я слишком сократил ссылку — /g/НАЗВАНИЕ_ГРУППЫ/manage/tags.

Или мне стоит попробовать с другого места?

Я не знаю точно. Я не могу уделять этому много времени до OFFDEM. Пока я выполняю SQL-запросы, чтобы исправить проблему для новых пользователей по мере их появления. Возможно, я упустил какую-то деталь. Например… Все категории по умолчанию отключены, это может влиять на уведомления.

Это может быть актуально. Вы используете для этого настройку «Отключить все категории по умолчанию»?

1 лайк

Да, я использую эту настройку.