Creando un plugin de relación Usuario - Etiqueta

Puedes hacer esto con un plugin sencillo.

Lo que necesitas hacer

El plugin necesitará hacer lo siguiente:

  1. Añadir un campo personalizado de usuario llamado known_tags, una lista de cadenas.

  2. Añadir una interfaz en el perfil de usuario donde el usuario pueda editar known_tags. No creo que sea necesario añadir una pestaña de perfil completamente nueva para esto, pero podrías hacerlo si quisieras. Si no quieres que los usuarios lo editen ellos mismos, haz que solo sea editable por los administradores y simplemente ve a los perfiles de usuario y actualízalo basándote en tu archivo CSV.

  3. Añadir un hook de eventos que utilice los eventos before_create_post o post_created en el PostCreator para añadir el contenido que deseas a la publicación basándote en las etiquetas del tema.

Cómo hacerlo

Las partes 1 y 2 son muy similares a los plugins de ejemplo para otros modelos en el tema enlazado a continuación. Intenta deducirlo por analogía. Si te atascas de verdad, pídemelo y te daré una pista.

La parte 3 también irá en tu archivo plugin.rb. Se parecerá a esto:

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: "alguna razón"
      },
      skip_validations: true,
      bypass_bump: true
    )
  end
end

Inténtalo tú mismo. Si te atascas de verdad, te ayudaré. Siempre estoy más inclinado a ayudar si hay pruebas sólidas de que estás intentando resolverlo tú mismo :slight_smile:

2 Me gusta