यह एक ActiveRecord या AREL समस्या नहीं है, यह ठीक इसी तरह SQL और PostgreSQL में केस संवेदनशीलता काम करती है।
SQL में पहचानकर्ता (जैसे तालिका और स्तंभ नाम) केस-असंवेदनशील होते हैं जब तक कि उन्हें उद्धृत नहीं किया जाता है। मानक SQL का कहना है कि गैर-उद्धृत पहचानकर्ताओं को ऊपरी मामले में जोड़ दिया जाता है, PostgreSQL उन्हें निचले मामले में मोड़ देता है, इसलिए bar.maxusers
त्रुटि संदेश में।
इसका समाधान आपत्तिजनक कॉलम के नाम को उद्धृत करना है:
.having('COUNT(foo.id) > bar."maxUsers"')
ध्यान दें कि आपको पहचानकर्ता को उद्धृत करने के लिए दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए क्योंकि एकल उद्धरण केवल स्ट्रिंग अक्षर के लिए हैं। यह भी ध्यान दें कि पहचानकर्ता उद्धरण डेटाबेस-विशिष्ट है:मानक SQL और PostgreSQL दोहरे उद्धरण चिह्नों का उपयोग करते हैं, MySQL बैकटिक्स का उपयोग करता है, SQL सर्वर कोष्ठक का उपयोग करता है, ...