存储插件数据有什么最佳方式?

如果您只需要存储单个主题 ID(如可配置值),最简单的 Discourse 原生方法是使用 SiteSetting
您还会自动获得一个内置的管理员界面。

config/settings.yml
``yml
plugins:
my_plugin_enabled:
default: true
client: false

my_plugin_topic_id:
default: 0
client: false
type: topic # 在管理员界面中为您提供一个主题选择器
``

在您的 Ruby 插件代码中:
rb topic_id = SiteSetting.my_plugin_topic_id topic = Topic.find_by(id: topic_id)

如果您更喜欢以编程方式存储它(不作为设置公开),
PluginStore 对于单个键值对也是可以的:

``rb
store = PluginStore.new(“my_plugin”)
store.set(“topic_id”, some_topic_id)

topic_id = store.get(“topic_id”)
``

3 个赞