Как добавить всех участников в новую группу?

Здравствуйте,

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

Импорт 100 участников работает, но мне нужно добавить 40 тысяч.

Ранее можно было импортировать до 10 тысяч.

Есть какие-то идеи?

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

Зачем? Какую проблему это решает? Планируете ли вы позже удалить некоторых из них? Почему бы просто не использовать trust_level_0 или trust_level_1? Скорее всего, что бы вы ни пытались сделать, добавление всех пользователей в группу — не лучший способ решения проблемы.

Вы можете сделать это через Rails. Думаю, это сработает.

group = Group.find_by_name('my_group')
User.all.each do |user|
  GroupUser.create!(user_id: user.id, group_id: group.id)
end

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

Да, я просто использую Trust_level_0, когда мне нужно охватить демографию всех участников.

Я хотел бы упомянуть в теме (и отправить уведомление по электронной почте) всех участников. Сработает ли это для группы Trust_level_0? В идеале я предпочел бы создать новую группу, чтобы задать своё название.

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

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

Возможно, стоит посмотреть на плагин автоматизации и групповое членство через бейджи. Похоже, можно создать пользовательский бейдж, который будет добавлять пользователей с этим бейджем в группу: Discourse Automation

Если у вас более 100 пользователей, вам необходимо изменить настройку «Максимальное количество уведомляемых пользователей при упоминании группы».

Ах да, хороший момент! Спасибо, я забыл об этой настройке. :slight_smile:

Максимальное количество пользователей, которое можно добавить за один раз в форму «Добавить пользователей» группы, составляет 1000. Судя по коду, если вы попытаетесь добавить больше, должно появиться сообщение об ошибке, похожее на это:

«Максимум 1000 пользователей можно добавить за один раз».

Должен быть какой-то лимит, иначе Discourse рискует выдать необработанную ошибку. Чтобы обойти это ограничение, мне нравится подход с плагином Автоматизации, который предложил Джей.

Почему бы не использовать инкапсулированный интерфейс group.add(user)? Не возникнет ли потенциальных проблем при прямом манипулировании ActiveRecords таким образом?

Я почти уверен, что это лучшее (и самое простое) решение для случая использования @kam44.

Но очень полезно знать, как добавлять людей в группу через консоль Rails: это пригодится при слиянии больших групп, что мне иногда приходилось делать!

И почему бы и нет? Не уверен, почему я не заметил этого, когда искал это некоторое время назад.

Вызов методов Active Record не опасен. Он обеспечивает соблюдение необходимых правил.