Puoi farlo con un semplice plugin.
Cosa devi fare
Il plugin dovrà fare quanto segue:
-
Aggiungere un campo personalizzato utente chiamato
known_tags, una lista di stringhe. -
Aggiungere un’interfaccia nel profilo utente dove l’utente può modificare
known_tags. Non penso sia necessario aggiungere una nuova scheda di profilo per questo, ma potresti farlo se volessi. Se non vuoi che gli utenti lo modifichino da soli, rendilo modificabile solo dagli amministratori e vai semplicemente nei profili utente e aggiornalo in base al tuo file CSV. -
Aggiungere un hook di evento che utilizzi gli eventi
before_create_postopost_createdinPostCreatorper aggiungere il contenuto desiderato al post in base ai tag dell’argomento.
Come fare
Le parti 1 e 2 sono molto simili ai plugin di esempio per altri modelli negli argomenti collegati di seguito. Cerca di capirlo per analogia. Se ti blocchi davvero, chiedimi un suggerimento lì.
La parte 3 andrà anche nel tuo file plugin.rb. Sarà qualcosa di simile a questo
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 + "qualcosa qualcosa #{usernames}"
PostRevisor.new(post).revise!(
user,
{
raw: new_raw,
edit_reason: "qualche motivo"
},
skip_validations: true,
bypass_bump: true
)
end
end
Prova a farlo da solo. Se ti blocchi davvero, ti aiuterò. Sono sempre più propenso ad aiutare se ci sono forti prove che stai cercando di capirlo da solo ![]()