بدايةً، يتطلب تحقيق هذا الهدف في ActiveAdmin استخدام مجموعة من المفاهيم والأدوات المتوفرة في الإطار. يبدو أنك تريد إضافة عملية تصفية إلى الواجهة الإدارية (ActiveAdmin) لعرض الشقق المتاحة خلال فترة زمنية معينة.
أولاً، يمكنك إنشاء نموذج لتصفية البيانات باستخدام فورم في ActiveAdmin. يمكنك فعل ذلك باستخدام خيارات مثل filter
أو sidebar
. هذا يسمح للمسؤولين بإدخال تواريخ البحث وإرسالها باستخدام الفورم.
لإنشاء نموذج لتصفية البيانات، يمكنك استخدام الكود التالي في ملف الـ app/admin/apartment.rb
:
rubyActiveAdmin.register Apartment do
filter :available_during, label: 'Available during', as: :date_range
end
هذا الكود يخلق حقلًا في الواجهة الإدارية يتيح للمسؤولين اختيار فترة زمنية. إذا كانت تواريخ البحث متوفرة في params[:q]
(وهي الطريقة التي يقوم فيها ActiveAdmin بمعالجة تصفية البيانات)، يمكن استخدامها لتصفية البيانات.
الآن، بالنسبة لتطبيق الفلترة باستخدام الدالة available_during
التي أنشأتها في نموذج الـ Apartment
، يمكنك استخدام مثيلات النماذج (Model Scopes). لنفترض أن لديك نموذجًا لـ Apartment
وأن لديك مجموعة من الحقول مثل start_date
و end_date
. يمكنك إنشاء نموذج الفلترة باستخدام الكود التالي:
rubyclass Apartment < ApplicationRecord
has_many :occupancies
def self.available_during(start_date, end_date)
where.not(id: Occupancy.where("start_date <= ? AND end_date >= ?", end_date, start_date).pluck(:apartment_id))
end
end
هذا النموذج يقوم بإرجاع جميع الشقق التي لا تحتوي على حجوزات خلال الفترة الزمنية المحددة. تأكد من تعديل الشروط وفقًا لهويتك الداخلية للشقق والحجوزات.
ثم، يمكنك استخدام هذا النموذج في ActiveAdmin كما يلي:
rubyActiveAdmin.register Apartment do
filter :available_during, label: 'Available during', as: :date_range
controller do
def scoped_collection
super.available_during(params[:q][:available_during_start], params[:q][:available_during_end])
end
end
end
هذا الكود يستخدم المجال المناسب لتنفيذ نموذج الفلترة الخاص بك. يمكنك التحكم في كيفية تنفيذ الفلترة بواسطة دالة scoped_collection
في ActiveAdmin.
بهذه الطريقة، يمكن للمسؤولين استخدام الفورم لتحديد فترة البحث وتصفية الشقق المتاحة وفقًا لتلك الفترة.
المزيد من المعلومات
بالطبع، لنواصل إكمال المقال:
مع وجود الكود السابق، يمكن للمسؤولين الآن استخدام واجهة ActiveAdmin بكفاءة للبحث وتصفية الشقق المتاحة خلال فترة زمنية معينة.
يمكن للمسؤولين الآن الوصول إلى واجهة إدارة الشقق في ActiveAdmin واستخدام حقل “Available during” المضاف حديثًا في نموذج الفلترة. يمكنهم تحديد تاريخ البداية وتاريخ الانتهاء للبحث عن الشقق المتاحة خلال تلك الفترة.
عند البحث، يتم استخدام الدالة available_during
التي تم تعريفها في نموذج Apartment
لاستعادة الشقق التي لا تحتوي على حجوزات خلال الفترة الزمنية المحددة. يتم عرض النتائج المناسبة للمسؤولين مباشرةً في واجهة ActiveAdmin.
باستخدام هذا النهج، يمكن للمسؤولين الآن إدارة وعرض الشقق المتاحة بسهولة خلال أوقات محددة، مما يتيح لهم اتخاذ القرارات الأكثر فاعلية بناءً على البيانات الفعلية والمحدثة.
إن تنفيذ هذه الميزة يسمح لفريق الإدارة بتحسين عملية اتخاذ القرارات وتحسين تجربة المستخدم النهائية. كما أنه يضيف قيمة عملية للمنصة بتوفير وسيلة سهلة وفعالة للبحث وتصفية البيانات وفقًا لمعايير مخصصة.
باستخدام ميزات ActiveAdmin مثل الفلاتر المخصصة والنماذج الخاصة، يمكن للمطورين تعزيز وتخصيص واجهة الإدارة لتناسب احتياجات التطبيقات الخاصة بهم بشكل أفضل، مما يسهل على فرق الإدارة عملياتهم ويحسن من تجربة المستخدم النهائية.