هل تضيف حقول الموضوع المخصصة عمودًا في نموذج الموضوع؟ أحصل على خطأ يقول لا، وأنا أحاول معرفة ما يجب فعله حيال ذلك.
لقد أنشأت حقل موضوع مخصصًا في بيئة التطوير، متبعًا هذا الدليل. لنسمّه fun_level. يبدو أن الحقل المخصص قد تم إنشاؤه بنجاح في بيئة التطوير، لأنه إذا قمت باتصال Ajax لجلب موضوع قمت بإنشائه بعد إضافة الحقل المخصص—مثل ajax("/t/112.json")—فيعمل: تعود بيانات الموضوع وتظهر الحقل fun_level بالقيمة التي أدخلتها.
لكن الآن أحتاج إلى إيجاد طريقة لاسترداد جميع الموضوعات برمجياً التي تحتوي على قيمة معينة للحقل المخصص (على سبيل المثال، الحصول على قائمة بجميع الموضوعات حيث fun_level = ‘super-duper-fun’).
لقد فكرت في استخدام ajax("/search") لذلك، لكنني لم أتمكن من جعله يعمل بعد.
طريقة أخرى فكرت فيها هي استخدام ريلز الكلاسيكية: إنشاء وحدة تحكم، وعندما أذهب إلى مسار معين (/fun_levels/:fun_level)، استدعي طريقة العرض التالية:
def show
respond_to do |format|
format.json { render json: Topic.where(fun_level: 'super-duper-fun') }
end
end
ثم، استدعي ajax("/fun_levels/super-duper-fun.json")…
تعمل استراتيجية طريقة العرض/اتصال Ajax هذه إذا كنت أبحث عن موضوعات بناءً على معرف أو عنوان، إلخ. ولكن عندما أستخدم الكود أعلاه-Topic.where(fun_level: 'super-duper-fun)-فإنه يرسل خطأ في الخادم الداخلي. وتقول السجلات:
ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column topics.fun_level does not exist LINE 1: ... "topics" WHERE "topics"."deleted_at" IS NULL AND "topics"."...
هل توجد طريقة لاسترداد موضوعات بناءً على حقل مخصص باستخدام طريقة وحدة تحكم، كما قدمت أعلاه؟ (مثل: { render json: Topic.where(fun_level: 'super-duper-fun') })