मैंने जो समाधान चुना है वह यहां है। ट्रिक left outer join
. का उपयोग कर रही थी (रूबी कमांड उत्सुक_लोड) उपयोगकर्ताओं और ब्लॉक्ड_डेट_पीरियोड टेबल के लिए, और उन उपयोगकर्ताओं सहित, जिनकी सम्मिलित तालिका में start_date फ़ील्ड NULL है, जाहिर है क्योंकि उनके पास स्वयं से जुड़ी कोई भी अवरुद्ध तिथि वस्तु नहीं है। मैं जिस क्वेरी का उपयोग करता हूं:
User.eager_load(:blocked_date_periods).
where("blocked_date_periods.start_date is null OR
not tsrange(
blocked_date_periods.start_date - '00:59:59'::interval,
blocked_date_periods.end_date + '00:59:59'::interval
) @> ?::timestamp",
Date.parse(DATE_STRING)).count
मुझे प्रारंभ और समाप्ति तिथि से 1 घंटा जोड़ना और घटाना पड़ा क्योंकि क्वेरी किसी कारण से सटीक समाप्ति तिथियों को शामिल नहीं करना चाहती थी, इसलिए 12-26-2015 को 12-22-2015 से 12-22-2015 की अवधि के अंदर शामिल नहीं किया गया था। 12-16-2015 किसी कारण से मुझे अभी तक समझ नहीं आया है।
किसी कारण से मुझे वह समाधान पसंद नहीं है और मैं जानना चाहूंगा कि क्या कोई प्रश्न है जो मेरे पास से बेहतर और तेज़ है।