أفضل الممارسات لأتمتة العناوين حسب مجموعات + مستويات الثقة

أردت فقط تقديم تحديث وشكر كل من ساعد.\n\nمع التغييرات الأخيرة، تعمل الإضافة الآن تمامًا كما كنت أقصد! إنها تعين الألقاب بشكل صحيح بناءً على المجموعة الأساسية للمستخدم ومستوى الثقة.\n\nأنا أنشر الكود النهائي العامل أدناه. يبدو أنه صحيح، ولكن نظرًا لأنني لست مطورًا، كنت أتساءل عما إذا كانت هناك أي مجالات للتحسين أو التحسين قد أكون قد أغفلتها.\n\napp/jobs/scheduled/update-all-titles.rb\n\n\n# frozen_string_literal: true\n\nmodule ::Jobs\n class AssignGroupBasedTitles < ::Jobs::Scheduled\n every SiteSetting.update_title_frequency.hours\n\n def execute(args)\n return unless SiteSetting.add_title_by_group_trust_enabled\n\n # الحصول على قيمة الإعداد، وهي الآن سلسلة JSON\n rules_json_string = SiteSetting.group_based_title_rules\n return if rules_json_string.blank?\n\n begin\n # هذا هو الإصلاح الأكثر أهمية: تحليل سلسلة JSON يدويًا إلى مصفوفة Ruby\n rules = JSON.parse(rules_json_string)\n rescue JSON::ParserError\n # إذا كان تنسيق JSON خاطئًا، فقم بالخروج مباشرة لمنع فشل المهمة\n Rails.logger.error(\"Group-Based Titles Plugin: Failed to parse group_based_title_rules JSON.\")\n return\n end\n \n return unless rules.is_a?(Array) && rules.present?\n\n User.transaction do\n rules.each do |rule|\n group_id = rule[\"group_id\"]\n trust_level = rule[\"trust_level\"]\n title = rule[\"title\"]\n\n next if group_id.blank? || trust_level.blank? || title.blank?\n\n User.where(primary_group_id: group_id, trust_level: trust_level)\n .where.not(title: title)\n .update_all(title: title)\n end\n end\n end\n end\nend\n\n\nconfig/settings.yml\n\nplugins:\n add_title_by_group_trust_enabled:\n default: true\n client: true\n\n # يجب أن يكون هذا من النوع: objects. كان هذا مصدر الخطأ.\n group_based_title_rules:\n type: objects\n default: []\n schema:\n properties:\n group_id:\n type: integer\n name: \"User Group\"\n component: \"group-chooser\"\n trust_level:\n type: integer\n name: \"Trust Level\"\n min: 1\n max: 4\n title:\n type: string\n name: \"Title\"\n \n update_title_frequency:\n default: 24\n type: integer\n\n\nplugin.rb\n\n# frozen_string_literal: true\n\n# name: add-title-by-group-trust-level\n# about: Assign titles based on primary group and trust level.\n# version: 2.1.0\n# authors: Your Name\n\nenabled_site_setting :add_title_by_group_trust_enabled\n\nafter_initialize do\n require_relative \"./app/jobs/scheduled/update-all-titles.rb\"\nend\n

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