2011-11-08 15 views
5

यह रेल 3.0.x प्रोजेक्ट पर रूबी के लिए है।रूबी/रेल - मॉडलिंग के बिना "लुकअप" टेबल तक पहुंचें?

मेरे पास एक विक्रेता से डेटा के साथ "लुकअप" तालिका है।

जब मैं किसी अन्य स्रोत से डेटा आयात करता हूं, तो मैं अतिरिक्त डेटा के लिए इस तालिका (एसकेयू पर शामिल होना) देखना चाहता हूं।

मेरे ऐप में इस तालिका के लिए मॉडल बनाने के लिए मेरे लिए यह सही नहीं लगता है। डेटा मेरे ऐप द्वारा कभी नहीं बदला जाएगा, और इसमें अभी तक बताए गए डेटा लुकअप से परे कोई मॉडल एसोसिएशन नहीं होना चाहिए। इसे कभी-कभी कुछ जानकारी की जांच करने के लिए उपयोग किया जाता है।

इस तालिका तक पहुंचने का सबसे अच्छा अभ्यास क्या है?

धन्यवाद।

उत्तर

9

इसके चारों ओर एक मॉडल बनाने में कोई हानि नहीं है, लेकिन यदि आप इसे टालना चाहते हैं, तो आपको वैकल्पिक विकल्प के रूप में डेटा प्राप्त करने के लिए डीबी को कच्चे एसक्यूएल प्रश्न भेजना होगा।

अपरिष्कृत क्वेरी: Rails raw SQL example

दूसरी ओर, मैं इसे चारों ओर एक मॉडल लपेटकर के लिए प्रेरणा से परे है या नहीं, आप इसे संशोधित करना चाहते हैं चला जाता है लगता है। मेरे पास निश्चित रूप से ऐसे ऐप्स हैं जिनमें टेबल के चारों ओर मॉडल हैं जो कभी नहीं बदलते हैं (यानी ऐप-विशिष्ट शब्दावली की सूची, शहरों/राज्यों की एक सूची, और अन्य स्थिर डेटा जो एक बार आयात किया जाता है और कभी नहीं बदला जाता है)। ActiveRecord कॉलम को आसानी से सुलभ तरीकों से भी लपेटेगा, ताकि आप आसानी से उस डेटा को पढ़ सकें, सॉर्टिंग, ढूंढने आदि के आसपास सभी सुविधा विधियों का उल्लेख न करें।

2

एक और विकल्प इसे किसी YML में संग्रहीत करना है, और फिर लोड करना है कि YML आपके पर्यावरण में स्थिर है। आरबी फ़ाइल।

LOOK_UP_TABLE = YAML.load_file("#{RAILS_ROOT}/misc/vendor_data.yml") 
1

इसके लिए ... एक मॉडल एक मॉडल बनाने के अधिकार क्यों नहीं लगता है:

इस तरह

? यदि यह डेटाबेस में है, तो इसके लिए कोई मॉडल नहीं होने का कोई कारण नहीं है।

आप अपनी resource परिभाषा को प्रतिबंधित करना चाहते हैं, या पहुंच से बचने के लिए इसे बिल्कुल मानचित्र नहीं करना चाहते हैं। ऐसा कहा जाता है कि, संभवतः आप इसे अपडेट करने में सक्षम होना चाहते हैं: वेब इंटरफ़ेस ऐसा करने का एक आसान तरीका है, चाहे फ़ाइल- या उपयोगकर्ता द्वारा संचालित।

अन्य विकल्पों में इसे एक कॉन्फ़िगरेशन फ़ाइल (याम, एक्सएमएल, विक्रेता-विशिष्ट) से लोड करना शामिल है, इसे एक सेवा से पुनर्प्राप्त करना आदि शामिल हैं। ये समाधान स्टैंड-अलोन हो सकते हैं, या मॉडल-समर्थित दृष्टिकोण का लाभ उठा सकते हैं।

संबंधित मुद्दे