ما هي أفضل طريقة لتخزين البيانات باستخدام إضافة؟

أخطط لتخزين البيانات باستخدام إضافة (plugin)، لقيمة واحدة حرفيًا، وهي مُعرّف موضوع (topic 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 إعجابات

أعتقد أن PluginStore هي الطريقة الأنسب. لن يناسب إعداد الموقع حالة الاستخدام هذه. شكرًا!

إعجاب واحد (1)

لقد ذكرني سؤالك بشيء قرأته مؤخرًا على ميتا.

إعجابَين (2)

كنت على وشك البدء - شكرًا لإثارة هذا الأمر. يبدو أن إنشاء جدول قاعدة بيانات كامل لقيمة واحدة هو أمر مبالغ فيه وغير ضروري على الإطلاق. أية أفكار؟

إعجاب واحد (1)

ما هو السبب وراء عدم رغبتك في إعداد موقع؟ يمكن إخفاؤه حتى لا يراه المسؤولون، مثل معرفات المواضيع الخاصة في النواة، مثل شروط الخدمة (TOS).

حالة الاستخدام الخاصة بي هي كالتالي: أي موضوع أو منشور يتم إنشاؤه من المكون الإضافي يكون ممكّنًا ومُزامَنًا ومُخزَّنًا في مكان آخر. لكن الموضوعات التي سبقت ذلك ليست كذلك، لذا يجب عليّ تشغيل مهمة لمزامنتها، ربما على دفعات من 100. أحتاج إلى تخزين أقل مُعرِّف موضوع (topic ID) بحيث تكون الدفعة التالية هي ذلك مطروحًا منه 100، وهكذا.

يقوم روبوت الدردشة بشيء مشابه جدًا.

إليك الترحيل:

3 إعجابات

هذا جيد - على الأقل أنا لست الوحيد :laughing:… عقبتي التالية هي كيفية تشغيل الترحيل (migration) - في موقع Discourse تجريبي أو شيء آخر… ألن يؤدي تشغيل الترحيل بعد ذلك إلى الإضافة إلى دليل ترحيلات Discourse؟ هل يجب أن أنسخ الملف يدويًا؟ شكرًا.

تقوم بوضعه، كما هو الحال مع جميع عمليات ترحيل المكونات الإضافية، في المكون الإضافي (تمامًا مثل Chatbot أعلاه).

تقوم بتشغيل عمليات الترحيل باستخدام LOAD_PLUGINS=1 rake db:migrate

اقرأ عن عمليات الترحيل هنا:

إعجابَين (2)

الشيء الوحيد الذي لا أفهمه هو أنه من المفترض أن أكتب الدقيقة والثانية يدويًا أثناء إنشاء الملف؟

اقرأ الدليل. لست مقتنعًا بأنك قرأت ما بعد القسم الأول. :wink:

إعجاب واحد (1)