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 os usuários ou um subconjunto de usuários no Discourse.

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

:warning: É necessário acesso ao console.

Se você precisar atualizar a preferência de usuário para todos os seus usuários ou um grande subconjunto de usuários, poderá fazê-lo via 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 os nomes das 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 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 visita para usuários inativos

Defina a data da última visita 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 discussão para todos os usuários

Retorne os usuários à configuração padrão para evitar que recebam e-mails para cada nova publicação.

UserOption.update_all(mailing_list_mode: false)

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

Retorne às configurações padrão para evitar notificações por e-mail quando os usuários estiverem ativos 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 estiver 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 nas 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
  • 2: nunca

Para mais informações, consulte controlando 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 do Discourse no GitHub.

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

Verifique a configuração relevante para acompanhamento.

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

39 curtidas