لدي حقل مستخدم مخصص للاحتفاظ بمعرف المشروع الذي ينتمي إليه المستخدم.
الغرض: المستخدم الذي يدخل معرف مشروع صالح (مدفوع) لديه حق الوصول إلى فئات المحتوى الغني.
التحقق مما إذا كان معرف المشروع الذي أدخله المستخدم يتوافق مع معرف مشروع موجود أمر سهل إلى حد ما:
# تعريف الطريقة للتحقق من الحقل المخصص
def validate_projectid_customfield
# مفتاح الحقل المخصص وقائمة محددة مسبقًا
custom_field_key = 'projectid'
predefined_list = ["558", "963", "819"]
# الحصول على قيمة الحقل المخصص للمستخدم
user_field_value = self.custom_fields[custom_field_key]
# إذا لم تكن القيمة في القائمة المحددة مسبقًا، قم بإثارة خطأ
if !user_field_value.nil? && !user_field_value.empty?
unless predefined_list.include?(user_field_value)
# إثارة خطأ تحقق سيفهمه Discourse
WHAT TO DO HERE?
end
end
end
في الوقت الحالي، لدي الكود التالي بدلاً من “WHAT TO DO HERE؟”
self.errors.add(:base, I18n.t("user.project.invalid_value"))
raise ActiveRecord::RecordInvalid.new(self)
لكن هذا لا يبدو أنه يعمل.
إذا قمت بأخذ صفحة الملف الشخصي وملء قيمة (صحيحة أو خاطئة)، يتفاعل النظام أولاً مع “تم الحفظ!” متبوعًا فورًا بـ “500 خطأ داخلي في الخادم”.
ربما يكون كل هذا بسبب الكود الخاطئ في البداية؟
after_initialize do
add_model_callback(User, :before_save) do
validate_projectid_customfield
end
end
هل يمكن لأي شخص مساعدتي أو توجيهي إلى الوثائق الصحيحة؟
شكرًا!