يجب أن يقوم limit(10) بذلك بالفعل ![]()
هذا النوع من الحلول يجب أن ينجح: (لكنه لم يُختبر)
Topic.where("category_id in (?)", [cat_id])
.where("closed = ?", false)
.joins("LEFT JOIN topic_custom_fields import_tcf ON import_tcf.topic_id = topic.id AND topic_custom_fields.name = 'importedSortDate'")
.order("TIMESTAMP import_tcf.value")
.order("created_at desc")
.limit(10)
المشكلة هي أن طلب PostgreSQL لتحويل سلسلة التاريخ إلى طابع زمني (timestamp) سيكون غير فعال للغاية. سيتعين عليه إجراء التحويل لكل عنوان على حدة أولاً، ثم اختيار أول 10 عناوين.
هناك عدة خيارات يمكنني التفكير فيها هنا - يمكنك تخزين التواريخ كـ “ثوانٍ منذ بداية العصر” بدلاً من تنسيق ISO8601. هذا سيجعل من السهل على PostgreSQL فرزها بشكل كبير. أو قد تتمكن من استخدام هجرة قاعدة بيانات لإضافة فهرس إلى جدول topic_custom_fields لحقل TIMESTAMP value.