Erstellen eines User - Tag relation Plugins

Sie können dies mit einem einfachen Plugin tun.

Was Sie tun müssen

Das Plugin muss Folgendes tun:

  1. Fügen Sie ein benutzerdefiniertes Feld für Benutzer namens known_tags hinzu, eine Liste von Zeichenfolgen.

  2. Fügen Sie eine Benutzeroberfläche im Benutzerprofil hinzu, in der der Benutzer known_tags bearbeiten kann. Ich glaube nicht, dass es notwendig ist, dafür einen völlig neuen Profil-Tab hinzuzufügen, aber Sie könnten es tun, wenn Sie möchten. Wenn Sie nicht möchten, dass Benutzer es selbst bearbeiten, machen Sie es nur für Administratoren bearbeitbar und gehen Sie einfach in die Benutzerprofile und aktualisieren Sie es anhand Ihrer CSV-Datei.

  3. Fügen Sie einen Event-Hook hinzu, der die Ereignisse before_create_post oder post_created im PostCreator verwendet, um den gewünschten Inhalt basierend auf den Tags im Thema zum Beitrag hinzuzufügen.

Wie es geht

Teile 1 und 2 sind den Beispiel-Plugins für andere Modelle im unten verlinkten Thema sehr ähnlich. Versuchen Sie, es analog herauszufinden. Wenn Sie wirklich nicht weiterkommen, fragen Sie mich nach einem Hinweis.

Teil 3 kommt ebenfalls in Ihre plugin.rb-Datei. Es wird ungefähr so aussehen

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

Versuchen Sie es selbst. Wenn Sie wirklich nicht weiterkommen, werde ich helfen. Ich bin immer eher bereit zu helfen, wenn es starke Beweise dafür gibt, dass Sie versuchen, es selbst herauszufinden :slight_smile:

2 „Gefällt mir“