Was ist der beste Weg, Daten mit einem Plugin zu speichern?

Wenn Sie nur eine einzelne Topic-ID speichern müssen (wie einen konfigurierbaren Wert), ist der einfachste Discourse-native Weg die Verwendung einer SiteSetting.
Sie erhalten außerdem automatisch eine integrierte Admin-Benutzeroberfläche.

config/settings.yml:

plugins:
  my_plugin_enabled:
    default: true
    client: false

  my_plugin_topic_id:
    default: 0
    client: false
    type: topic      # erstellt einen Themenwähler in der Admin-Benutzeroberfläche

In Ihrem Ruby-Plugin-Code:

topic_id = SiteSetting.my_plugin_topic_id
topic = Topic.find_by(id: topic_id)

Wenn Sie es vorziehen, es programmatisch zu speichern (nicht als Einstellung verfügbar gemacht), ist PluginStore ebenfalls für ein einzelnes Schlüssel-Wert-Paar geeignet:

store = PluginStore.new("my_plugin")
store.set("topic_id", some_topic_id)

topic_id = store.get("topic_id")
3 „Gefällt mir“