रूबी ऑन रेल्स: एक डीबी कॉलम से अधिकतम मूल्य प्राप्त करना


125

वर्तमान में मैं अपने DB पर स्ट्रेट-अप SQL क्वेरी बना सकता हूं:

SELECT MAX(bar) FROM table_name

और यह उस तालिका में अधिकतम मूल्य के साथ लौटता है। जब मैं बनाता हूं कि मैं रेल में एक समान कॉल मानता हूं, हालांकि, यह काम नहीं करता है। मैं कॉल कर रहा हूँ:

Bar.all(:select => "Max(bar)")

यह केवल साथ लौटता है:

[#<Bar >]

जिस कॉलम में मैं कॉल कर रहा हूं, वह संख्याओं की पहचान करने की एक श्रृंखला है, मैं सबसे बड़ा खोज रहा हूं। क्या रेल में इसे एक्सेस करने का कोई और तरीका है?

जवाबों:


272

मान लें कि आपका मॉडल नाम है Barऔर इसमें एक कॉलम नाम है bar, यह काम करना चाहिए:

Bar.maximum("bar")

अधिक जानकारी के लिए गणना पर उत्कृष्ट रेल गाइड अनुभाग देखें ।


आह हा! सही तुम हो, कि यह किया। मैं आपके उत्तर की जांच करूंगा क्योंकि एसओ मुझे जाने देगा। धन्यवाद!
कीबर्ड

6

एक और तरीका

Bar.select("Max(bar) as max_bar").first.max_bar

5
तुमने ऐसा क्यों करना चाहोगे? अधिक क्रिया, और ठीक उसी क्वेरी को निष्पादित करता है, Bar.maximum(:bar)इसलिए मुझे इस उत्तर पर "अनुशंसा" करने का कोई कारण नहीं
दिखता

19
उदाहरण के लिए, यदि आप न्यूनतम और अधिकतम दोनों चाहते हैं:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

प्रश्न पूछने वाला व्यक्ति केवल अधिकतम चाहता था।
क्रिस पीटर्स

1
उन्होंने प्रश्न के लिए एक सही उत्तर प्रदान किया। संभवतः यह सबसे अच्छा जवाब नहीं है, लेकिन उन्होंने इसके साथ कुछ भी गलत नहीं किया।
david0116
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.