রুবেলে অন রুবি: একটি ডিবি কলাম থেকে সর্বাধিক মান প্রাপ্ত


125

বর্তমানে আমি আমার ডিবিতে স্ট্রেট-আপ এসকিউএল কোয়েরি করতে পারি:

SELECT MAX(bar) FROM table_name

এবং এটি সেই টেবিলের সর্বোচ্চ মান দিয়ে ফিরে আসে returns আমি যখন রিলে একটি সমতুল কল হিসাবে বিবেচনা করি তখনই এটি কার্যকর হয় না। আমি ডাকছি:

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
— শ্যাভিত শ্যালিত

প্রশ্ন করা ব্যক্তিটি কেবল সর্বোচ্চটি চেয়েছিল wanted
— ক্রিস পিটারস

1
তিনি প্রশ্নের সঠিক উত্তর দিয়েছেন। সম্ভবত এটি সেরা উত্তর নয় তবে তিনি এতে কোনও ভুল করেন নি।
— david0116
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.