ActiveRecord पर कुछ मान्य आलोचना है। हमेशा की तरह, अंकल बॉब ने इसे पूरी तरह से गाया :
मेरे पास सक्रिय रिकॉर्ड के साथ समस्या यह है कि यह प्रोग्रामिंग की इन दो बहुत अलग शैलियों के बारे में भ्रम पैदा करता है। एक डेटाबेस तालिका एक डेटा संरचना है। इसने डेटा और कोई व्यवहार उजागर नहीं किया है। लेकिन एक सक्रिय रिकॉर्ड एक वस्तु प्रतीत होता है। इसमें "छिपा हुआ" डेटा और उजागर व्यवहार है। मैंने "छिपा हुआ" शब्द उद्धरण में रखा क्योंकि डेटा वास्तव में छिपा हुआ नहीं है। लगभग सभी ActiveRecord डेरिवेटिव एक्सेसर्स और म्यूटेटर के माध्यम से डेटाबेस कॉलम निर्यात करते हैं। दरअसल, एक्टिव रिकॉर्ड का इस्तेमाल डाटा स्ट्रक्चर की तरह किया जाता है।
दूसरी ओर, कई लोग अपने सक्रिय रिकॉर्ड वर्गों में व्यावसायिक नियम विधियों को डालते हैं; जो उन्हें वस्तु प्रतीत होता है। इससे दुविधा पैदा होती है। सक्रिय रिकॉर्ड वास्तव में रेखा के किस तरफ पड़ता है? क्या यह एक वस्तु है? या यह एक डेटा संरचना है?
विकिपीडिया ने आलोचना को एक चिंता का विषय बताया :
ओओपी में एन्कैप्सुलेशन की अवधारणा अक्सर चिंताओं के पृथक्करण की अवधारणा के साथ है। सामान्यतया, पैटर्न जो चिंताओं को अलग करने के पक्ष में होते हैं, वे अलग-अलग यूनिट परीक्षणों के लिए अधिक उपयुक्त होते हैं जबकि पैटर्न जो पक्ष एनकैप्सुलेशन से एपीआई का उपयोग करना आसान होता है। सक्रिय रिकॉर्ड बहुत हद तक उस बिंदु पर एनकैप्सुलेशन का पक्षधर है जहां डेटाबेस के बिना परीक्षण करना काफी कठिन है।
विशेष रूप से रूबी ऑन रेल्स कार्यान्वयन के लिए, गेविन किंग लिखते हैं (जोर मेरा):
इस बिंदु पर, अधिकांश डेवलपर्स उम सोच रहे हैं, ठीक है, तो मुझे कैसे पता चलेगा कि मेरे कोड को देखकर कंपनी के पास क्या विशेषताएं हैं? और मेरा आईडीई ऑटो उन्हें कैसे पूरा कर सकता है? बेशक, रेल के लोगों के पास इस सवाल का एक त्वरित उत्तर है ओह, बस अपने डेटाबेस क्लाइंट को फायर करें और डेटाबेस में देखें। फिर, यह मानते हुए कि आप ActiveRecord के ऑटोमैटिक कैपिटलाइज़ेशन और बहुवचन नियमों को पूरी तरह से जानते हैं / पूरी तरह से , आप अपनी खुद की कंपनी वर्ग की विशेषताओं के नामों का अनुमान लगाने में सक्षम होंगे , और उन्हें मैन्युअल रूप से टाइप करेंगे।
रूबों पर रेल के कार्यान्वयन पर भी, जॉन जानुसज़ाक लिखते हैं (जोर मेरा):
समस्या # 1: स्टेटिक विधि
...
कुछ लोग स्टैटिक विधियों का उपयोग करके प्रक्रियात्मक प्रोग्रामिंग के लिए राशियाँ कहेंगे, और इसलिए खराब ऑब्जेक्ट ओरिएंटेड डिज़ाइन है। दूसरों का कहना है कि स्थैतिक तरीके परीक्षण क्षमता के लिए मौत हैं।
समस्या # 2: वैश्विक संकेतन सेटिंग
...
इसलिए मेरे उदाहरण में खाता वर्ग पर और खाते के विस्तार पर कोई निर्भरता इंजेक्शन नहीं है । जैसा कि हम सभी को अभी तक पता होना चाहिए, चीजों की तलाश बहुत खराब है!
ActiveRecord और ORM को आमतौर पर एंटी-पैटर्न क्यों माना जाता है, इस पर कुछ और संसाधन:
ActiveRecord हमेशा एक अत्यंत उपयोगी विरोधी-पैटर्न की तरह महसूस करता था , लेकिन मैं इस बात से सहमत हूं कि यह SRP और अतिरिक्तता के खिलाफ जाता है और यह निर्भरता व्युत्क्रम सिद्धांत के खिलाफ जाता है।