Лучшая стратегия для участника, который хочет «приостановить»? Возможно, это не отключение

Привет! Я управляю сайтом с подпиской, где для форумов используется Discourse (через SSO). На основном сайте у участников есть свои аккаунты, профили и так далее.

В настоящее время участники могут временно приостановить свои основные профили, и это нормально. Когда это происходит, я также «приостанавливаю» их профили в Discourse с сообщением: «Этот участник решил временно приостановить свой профиль».

Вопрос: является ли это лучшим способом решения задачи? Существует ли какой-то другой механизм для «паузы» аккаунта в Discourse (поскольку участник решил временно не участвовать в обсуждениях)? В настоящее время сообщение о приостановке отображается в Discourse как большая красная метка, что в данном случае совершенно неуместно; очевидно, что функция приостановки была разработана в Discourse как мера наказания, но в данном случае ситуация не негативная.

Буду рад услышать любые мысли, размышления, идеи, а также увидеть милые гифки с котятами…

2 лайка

Вместо этого отключить их? Это прекратит отправку им писем. Им потребуется повторно подтвердить свои адреса электронной почты, чтобы возобновить использование форума. Обратите внимание: это также приведет к удалению их учетных записей после периода grace, но только в том случае, если у них нет ни одного сообщения.

4 лайка

Я открыт к этому — мне нужно будет изучить, что означает «Деактивация», я с этим не знаком. Спасибо за подсказку! (Жаль, что нет простой сравнительной таблицы для функций «Игнорировать», «Отключить уведомления», «Приостановить» и «Деактивировать». Все они представляют собой различные степени «Хочу видеть меньше от пользователя X», но есть и некоторые тонкие различия…)

2 лайка

Привет, @merefield. Под «деактивацией» вы имеете в виду просто изменение значения «Active» на false? Я не совсем понял. Я нашёл пост от @sam, где нет состояния «Deactivated». :man_shrugging:t2:

Да, именно это. Деактивация:

(это фрагмент страницы администратора для пользователя, доступной, как я полагаю, только администратору).

2 лайка

Итак. Я не могу понять, как определить, активирован пользователь или нет. Я могу получить объект пользователя (обе версии: /users/ и /admin/users/) через API… поэтому я извлек его до деактивации пользователя и после, а затем сравнил два JSON-дампа. Я не вижу никаких различий в полях, которые указывали бы на статус «активации» пользователя! Неужели я что-то упускаю?!

Используйте консоль Rails. И убедитесь, что вы сохранили изменения, если делаете это через код.

Спасибо за ваш ответ…

…но я не совсем понимаю, что вы имеете в виду. :slight_smile:

Сейчас я активирую/деактивирую пользователя напрямую в профиле пользователя (с помощью моей учётной записи администратора, просто нажимая кнопку), а затем получаю полную запись /admin/users/ с помощью Insomnia (инструмент для исследования API, аналогичный Postman). Таким образом, я вижу сырую JSON-запись пользователя, которую возвращает мне API.

Не совсем понятно, что мне даст использование консоли Rails? Или как «сохранить» какие-либо изменения? Когда я нажимаю кнопку «Деактивировать этого пользователя» на экране администратора пользователей, это происходит мгновенно.

Посмотрите на этом сайте :slight_smile:

https://meta.discourse.org/search?q=rails%20console

Я, конечно, предполагаю, что у вас есть доступ к терминалу? …

А, понял. Да, я так и есть… но, кажется, всё ещё не понимаю, как использование консоли Rails (чтобы поиграться со всем этим?) поможет мне в этом. Я поищу ещё…

попробуйте:

rails c

myUser = User.find_by(username_lower:"---их имя пользователя---")

Из директории discourse.

exit, чтобы … э-э … выйти :slight_smile:

будьте осторожны, если это Production.

Вы можете поэкспериментировать более безопасно с :slight_smile:

rails c --sandbox
1 лайк