Editar uma preferência de usuário para todos ou um subconjunto de usuários

:bookmark: Este guia explica como editar uma preferência de usuário para todos ou um subconjunto de usuários no Discourse.

:person_raising_hand: Nível de usuário necessário: Administrador do Sistema

:warning: Acesso ao console é necessário.

Se você precisar atualizar a preferência de usuário para todos os seus usuários ou um grande subconjunto de usuários, você pode fazer isso através do console rails.

Resumo

Neste guia, você aprenderá:

  • Como acessar o console Rails para fazer alterações em massa
  • Exemplos de modificação de preferências de usuário
  • Como identificar nomes de configurações

Acessando o console Rails

Para entrar no console Rails na sua instalação do Discourse, execute os seguintes comandos:

./launcher enter app
rails c

Em seguida, execute um comando que selecione o conjunto de usuários que você deseja atualizar.

Exemplos de modificação de preferências de usuário

Abaixo estão exemplos de comandos para atualizar várias preferências de usuário:

Definindo a data da última visualização para usuários inativos

Defina a data da última visualização para usuários que nunca fizeram login.

User.where("last_seen_at IS NULL").update_all(last_seen_at: 1.week.ago)

Desativando o modo de lista de e-mails para todos os usuários

Retorne os usuários ao padrão para evitar que recebam e-mails para cada nova postagem.

UserOption.update_all(mailing_list_mode: false)

Definindo o nível de e-mail como apenas quando ausente para todos os usuários

Reverta para as configurações padrão para evitar notificações por e-mail quando os usuários estiverem ativamente presentes no site.

UserOption.update_all(email_level: 1)

Onde email_level pode ter os valores:

  • 0: sempre (enviar e-mails mesmo quando o usuário está ativo)
  • 1: apenas quando ausente (padrão)
  • 2: nunca

Habilitando o chat para todos os membros do grupo beta

beta_group = Group.find_by(name: "beta")
beta_group.users.each do |user|
  UserOption.where(user_id: user.id).update_all(chat_enabled: true)
end

Configurando notificações por e-mail para excluir respostas anteriores

Defina a preferência para excluir respostas anteriores em notificações por e-mail.

UserOption.update_all(email_previous_replies: 0)

Onde email_previous_replies pode ter os valores:

  • 0: sempre
  • 1: a menos que já tenha sido enviado por e-mail anteriormente
  • 2: nunca

Para mais informações, consulte controlar respostas anteriores em e-mails.

Identificando o nome de uma configuração

Para determinar o nome da configuração do usuário e as opções disponíveis:

  • Use o plugin Data Explorer para inspecionar a tabela user_options.
  • Pesquise no repositório GitHub do Discourse.

Por exemplo, para ajustar a configuração relacionada a “Quando eu postar em um tópico, defina esse tópico como”, você precisa modificar a opção de usuário notification_level_when_replying.

Verifique a configuração relevante para watching.

Você também pode configurar o Docker para expor o psql e utilizar o PGadmin para facilitar o gerenciamento.

39 curtidas