Criando um plugin de relação User - Tag

Você pode fazer isso com um plugin simples.

O que você precisa fazer

O plugin precisará fazer o seguinte:

  1. Adicionar um campo personalizado de usuário chamado known_tags, uma lista de strings.

  2. Adicionar uma interface no perfil do usuário onde o usuário possa editar known_tags. Não acho necessário adicionar uma aba de perfil totalmente nova para isso, mas você pode se quiser. Se você não quiser que os usuários editem sozinhos, basta torná-lo editável apenas por administradores e entrar nos perfis dos usuários e atualizá-lo com base no seu arquivo CSV.

  3. Adicionar um hook de evento que use os eventos before_create_post ou post_created no PostCreator para adicionar o conteúdo que você deseja à postagem com base nas tags do tópico.

Como fazer

As partes 1 e 2 são muito semelhantes aos plugins de exemplo para outros modelos nos tópicos vinculados abaixo. Tente descobrir por analogia. Se você ficar realmente preso, peça-me uma dica lá.

A parte 3 também irá no seu arquivo plugin.rb. Parecerá algo assim

on(:post_created) |post, opts, user|
  if post.is_first_post? && post.topic.tags.present?
     user_ids = UserCustomField.where(name: 'known_tags', value: post.topic.tags).pluck(:user_id)
     usernames = User.where(id: user_ids).pluck(:username)
     new_raw = post.raw + "algo algo #{usernames}"
     PostRevisor.new(post).revise!(
      user,
      {
        raw: new_raw,
        edit_reason: "algum motivo"
      },
      skip_validations: true,
      bypass_bump: true
    )
  end
end

Tente você mesmo. Se você ficar realmente preso, eu ajudarei. Estou sempre mais inclinado a ajudar se houver fortes evidências de que você está tentando descobrir sozinho :slight_smile:

2 curtidas