Création d'un plugin de relation Utilisateur - Tag

Vous pouvez le faire avec un simple plugin.

Ce que vous devez faire

Le plugin devra faire ce qui suit :

  1. Ajouter un champ personnalisé utilisateur appelé known_tags, une liste de chaînes de caractères.

  2. Ajouter une interface dans le profil utilisateur où l’utilisateur peut modifier known_tags. Je ne pense pas qu’il soit nécessaire d’ajouter un onglet de profil entièrement nouveau pour cela, mais vous pourriez le faire si vous le souhaitez. Si vous ne voulez pas que les utilisateurs le modifient eux-mêmes, faites en sorte qu’il ne soit modifiable que par les administrateurs et allez simplement dans les profils des utilisateurs et mettez-le à jour en fonction de votre fichier CSV.

  3. Ajouter un hook d’événement qui utilise les événements before_create_post ou post_created dans PostCreator pour ajouter le contenu que vous souhaitez au message en fonction des tags du sujet.

Comment faire

Les parties 1 et 2 sont très similaires aux plugins d’exemple pour d’autres modèles dans le sujet lié ci-dessous. Essayez de le comprendre par analogie. Si vous êtes vraiment bloqué, demandez-moi un indice.

La partie 3 ira également dans votre fichier plugin.rb. Elle ressemblera à ceci :

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 + "quelque chose quelque chose #{usernames}"
     PostRevisor.new(post).revise!(
      user,
      {
        raw: new_raw,
        edit_reason: "une raison"
      },
      skip_validations: true,
      bypass_bump: true
    )
  end
end

Essayez par vous-même. Si vous êtes vraiment bloqué, je vous aiderai. Je suis toujours plus enclin à aider s’il y a des preuves solides que vous essayez de le comprendre par vous-même :slight_smile:

2 « J'aime »