プラグインでデータを保存する予定なのですが、実際にはトピックIDという1つの値だけです。これを保存する最良の方法は何でしょうか?
よろしくお願いします。
プラグインでデータを保存する予定なのですが、実際にはトピックIDという1つの値だけです。これを保存する最良の方法は何でしょうか?
よろしくお願いします。
単一のトピックID(設定可能な値のようなもの)のみを保存する必要がある場合は、最も簡単なDiscourseネイティブの方法は SiteSetting を使用することです。
組み込みの管理者UIも自動的に利用できます。
config/settings.yml:
``yml
plugins:
my_plugin_enabled:
default: true
client: false
my_plugin_topic_id:
default: 0
client: false
type: topic # 管理者UIにトピックセレクタが表示されます
``
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”)
``
PluginStore が最も適切な方法だと思います。サイト設定はこのユースケースには適合しません。ありがとうございます!
あなたの質問は、私が最近Metaで読んだことを思い出させました。
まさに始めようとしていたところです。ご指摘ありがとうございます。1つの値のためにデータベーステーブル全体を作成するのはやりすぎであり、全く不要に思えます。何かアイデアはありますか?
サイト設定を望まない理由は何ですか?コアのTOSのような特別トピックのIDのように、管理者が表示できないように隠すこともできます。
私のユースケースは次のとおりです。プラグインから作成されたトピックや投稿はすべて同期され、どこか別の場所に保存されます。しかし、それ以前のトピックは同期されないため、おそらく100件ずつのバッチでそれらを同期するためのジョブを実行する必要があります。次のバッチがその値から100を引いた値になるように、最も低いトピックIDを保存する必要があります。
チャットボットも非常によく似たことを行います。
以下がマイグレーションです。
それは良かった、少なくとも私だけではなかったようだ
… 次の難関は、マイグレーションをどのように実行するかだ。開発用のDiscourseサイトか、それとも何か別の場所で… マイグレーションを実行すると、単にDiscourseのマイグレーションディレクトリに追加されるだけではないだろうか?ファイルを手動でコピーすべきだろうか?ありがとう。
プラグインの移行はすべてそうであるように、プラグイン内に配置します(上記のチャットボットと同様)。
LOAD_PLUGINS=1 rake db:migrate でマイグレーションを実行します。
マイグレーションについてはこちらをお読みください。
私が理解できないのは、ファイルを作成するときに分と秒を手動で入力しなければならないということだけですか?
ガイドを読んでください。セクション1以降は読んでいないようですね ![]()