2009-08-03 14 views
6

ऐसा लगता है कि सेक्वेल के लिए डिफ़ॉल्ट चयन "चयन *" है, जो कुछ जोड़ों को जोड़ते समय सभी प्रकार की समस्याओं का कारण बनता है। कम से कम आप अपनी ऑब्जेक्ट्स में गलत आईडी के साथ समाप्त होते हैं (क्योंकि वहां एक से अधिक "आईडी" कॉलम लौटाया जाएगा)।सीक्वेल बहुत सारे कॉलम का चयन

.select("people.*") 

काम करने लगते हैं, लेकिन यह एक स्तंभ के रूप में पारित स्ट्रिंग का इलाज करता है और उद्धरण देता है। अभी तक मुझे इसे हल करने के लिए बेयर एसक्यूएल पर वापस जाना पड़ा है, लेकिन मुझे पता है कि एक बेहतर तरीका होना चाहिए।

उत्तर

5

सेक्वेल के लिए डिफ़ॉल्ट व्यवहार सभी कॉलम का चयन करना है, लेकिन इसे ओवरराइड करना आसान है। आप एक ही मेज से केवल सभी स्तंभों का चयन करना चाहते हैं:

.select(:people.*)

आप एक शाब्दिक एसक्यूएल स्ट्रिंग का उपयोग करना चाहते हैं:

.select('people.*'.lit)

+6

इन वाक्यविन्यास मेरे लिए काम नहीं कर रहे हैं, के रूप में सीक्वेल 4.10 का। ': लोग। * शिकायत' अपरिभाषित विधि * के लिए: लोग: प्रतीक', और '' लोग। * '। जलाए गए शिकायत' अनिश्चित विधि "लोगों के लिए जलाया गया। *": स्ट्रिंग'। ': 'लोग। *' 'सिर्फ लोगों के लिए खोज समाप्त होता है। *" '। '.select_all (: लोग)' चाल है, हालांकि। – womble

+0

'select_all' भी कई तालिकाओं को स्वीकार करता है। यदि आप दो तालिकाओं से सभी कॉलम और तीसरी तालिका से एक विशिष्ट कॉलम चाहते हैं, तो 'select_all (: tbl1,: tbl2) .select_more (: tbl3__col)' – Kelvin

+2

'' लोग '।' 'का उपयोग करें। Lit' अब 'Sequel है। लिट ('लोग। *') ' – Kelvin

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