Creazione di un plugin per la relazione Utente - Tag

Puoi farlo con un semplice plugin.

Cosa devi fare

Il plugin dovrà fare quanto segue:

  1. Aggiungere un campo personalizzato utente chiamato known_tags, una lista di stringhe.

  2. 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.

  3. Aggiungere un hook di evento che utilizzi gli eventi before_create_post o post_created in PostCreator per 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 :slight_smile:

2 Mi Piace