Você pode fazer isso com um plugin simples.
O que você precisa fazer
O plugin precisará fazer o seguinte:
-
Adicionar um campo personalizado de usuário chamado
known_tags, uma lista de strings. -
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. -
Adicionar um hook de evento que use os eventos
before_create_postoupost_creatednoPostCreatorpara 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 ![]()