पूरी तरह से दो ऐप्स नहीं चल रहा सिर्फ डेटाबेस के दो प्रकार के लिए द्वारा बातों पर-को मुश्किल करने के लिए कोई ज़रूरत नहीं है। ऐसा लगता है कि आपको DataMapper की आवश्यकता है। यह वही करेगा जो आपको बॉक्स से बाहर करने की ज़रूरत है। रेल के साथ एकीकृत करने के लिए डीएम-रेल मणि प्राप्त करें।
ActiveRecord के विपरीत, डेटामैपर में, आपको अपने अंतर्निहित डेटा स्टोर के बारे में सभी विवरण प्रदान करना होगा: इसमें कौन से फ़ील्ड हैं, वे आपके मॉडल में विशेषताओं को कैसे मैप करते हैं, तालिका नाम क्या हैं (यदि डेटाबेस में हैं), क्या बैकएंड इत्यादि आदि का उपयोग करता है
दस्तावेज़ीकरण पढ़ें ... आपको एक विचार देने के लिए कोड का एक बाल्टी लोड है।
प्रत्येक मॉडल केवल एक सादे पुरानी रूबी वस्तु है। वर्ग परिभाषा सिर्फ DataMapper::Resource
में घुलमिल, जो आप DataMapper कार्यक्षमता के सभी तक पहुँच देता है:
class User
include DataMapper::Resource
property :id, Serial
property :username, String
property :password_hash, String
property :created_at, DateTime
end
आप फिर भी नियंत्रण का एक बहुत कुछ है। उदाहरण के लिए, मैं निर्दिष्ट कर सकता हूं कि यह मॉडल मेरे डिफ़ॉल्ट डेटा स्टोर (भंडार) में स्टोर नहीं है और यह किसी अन्य कॉन्फ़िगर किए गए डेटा स्टोर में संग्रहीत है (जो आपको पसंद है, तो कोई नोएसक्यूएल स्टोर हो सकता है)।
class User
include DataMapper::Resource
storage_names[:some_other_repo] = 'whatever'
# ... SNIP ...
end
अधिकतर डीएम स्टेरॉयड पर ActiveRecord की तरह व्यवहार करता है। आप रिकॉर्ड खोजने (सिवाय आप मूल फ़ील्ड नाम का उपयोग करने के अपने मॉडल उन्हें दूर सार की आवश्यकता नहीं है) की तरह सभी मूल बातें मिलता है,:
new_users = User.all(:created_at.gte => 1.week.ago)
आप सत्यापन मिलता है, आप पर्यवेक्षकों मिलता है, आप कुल हैंडलिंग मिलता है ... फिर अन्य सामानों का एक गुच्छा प्राप्त करें, जैसे सामरिक उत्सुक-लोडिंग (एन + 1 क्वेरी समस्या हल करती है), बड़े टेक्स्ट/ब्लॉब फ़ील्ड की आलसी लोडिंग, एकाधिक रिपोजिटरी समर्थन। मेरी राय में क्वेरी तर्क एआर की तुलना में काफी अच्छा है। बस दस्तावेज़ों का एक पठन है। वे मानव-अनुकूल हैं। सिर्फ एक एपीआई संदर्भ नहीं।
नकारात्मक क्या है? खैर, कई रत्न इस बात पर ध्यान नहीं देते हैं कि आप ActiveRecord का उपयोग नहीं कर रहे हैं, इसलिए जब आपको किसी चीज़ के लिए मणि की आवश्यकता होती है तो कुछ और करने की खोज होती है। यह समय के साथ बेहतर हो जाएगा, हालांकि रेल से 3.x पहले रेलवे के साथ डीएम को एकीकृत करने से पहले इतना आसान नहीं था।
... क्या आप अधिक विशिष्ट हो सकते हैं? मेरा मतलब है, मैं वास्तव में आरामदायक हूं, जबकि मैन्गॉयड, जो रेल के दृष्टिकोण से समान होता है। वैसे भी हमें एक ही ऐप का जवाब देते हुए, एक MySQL डीबी भी प्रबंधित करने की आवश्यकता है। अग्रिम में धन्यवाद। –
मेरा अपडेट देखें, और दस्तावेज़ीकरण पढ़ें ... यह सब वहाँ है। एकाधिक डेटाबेस/नो-एसक्यूएल/जो भी-आप-जैसा समर्थन बनाया गया है। – d11wtq
यहां डेटामैपर के लिए मोंगोडीबी एडाप्टर है: https://github.com/solnic/dm-mongo-adapter – d11wtq