Qual a melhor forma de armazenar dados com um plugin?

Se você só precisa armazenar um único ID de Tópico (como um valor configurável), a maneira mais simples nativa do Discourse é usando uma SiteSetting (Configuração do Site).
Você também obtém uma interface de administração integrada automaticamente.

config/settings.yml:

plugins:
  my_plugin_enabled:
    default: true
    client: false

  my_plugin_topic_id:
    default: 0
    client: false
    type: topic      # fornece um seletor de tópico na interface de administração

No seu código de plugin Ruby:

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

Se você preferir armazená-lo programaticamente (não exposto como uma configuração), o PluginStore também serve para um único par chave-valor:

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

topic_id = store.get("topic_id")
3 curtidas