मैं products
की एक गैलरी प्रदर्शित करना चाहता हूं, जहां मैं उन उत्पादों को शामिल करता हूं जो बिक्री के लिए हैं और बिक्री के लिए नहीं हैं। केवल मैं products
चाहता हूं जो सूची के सामने दिखाई देने वाली बिक्री के लिए हैं और वस्तुओं के लिए बिक्री के लिए नहीं हैं सूची के अंत में दिखाई देंगे।क्या किसी ऑब्जेक्ट की व्यक्तिगत ऑब्जेक्ट की प्रतिक्रिया के आधार पर ऑब्जेक्ट्स की सूची सॉर्ट करना संभव है?
available_products = []
sold_products = []
@products.each do |product|
if product.on_sale?
available_products << product
else
sold_products << product
end
end
:
मुझे यह पूरा करने के लिए एक आसान तरीका है दो सूचियों बनाने के लिए, तो उन्हें (? On_sale वस्तुओं में से एक सूची और on_sale नहीं वस्तुओं में से एक सूची) विलय है। । । लेकिन मेरे मौजूदा ऐप की संरचना के लिए, इसके लिए मेरे कोड में अजीबता के कारण अत्यधिक मात्रा में रिफैक्टरिंग की आवश्यकता होगी (मैं अपना पेजिनेशन खो देता हूं, और मैं रिफैक्टर नहीं करता)। यह आसान होगा अगर मेरे product
मॉडल की विधि on_sale?
द्वारा ऑब्जेक्ट की मौजूदा सूची को सॉर्ट करने का कोई तरीका था जो एक बूलियन मान देता है।
क्या मौजूदा सूची के माध्यम से और अधिक स्पष्ट रूप से पुन: प्रयास करना संभव है और इसे रेल में इस वास्तविक या गलत मूल्य से सॉर्ट करना संभव है? मैं केवल इसलिए पूछता हूं क्योंकि मुझे इस ढांचे/भाषा (रूबी) के अंदर छिपे हुए बारे में पता नहीं है और मैं जानना चाहता हूं कि वे मेरे सामने काम कर चुके हैं या नहीं।
महान लग रहा है! लेकिन मुझे इसके विशिष्ट कोड के साथ समस्याएं आ रही हैं, शायद आप इसके साथ मेरी मदद कर सकते हैं। यदि मैं एक-लाइनर का उपयोग करता हूं तो मुझे निम्न त्रुटि 'गलत विफलता के साथ गलत भाषा की तुलना' मिलती है, और यदि मैंने आपके द्वारा उल्लिखित पहले कोड का उपयोग किया है, तो मुझे [MyModule] :: [MyModule] :: उत्पाद के साथ उत्पाद की तुलना मिलती है :: उत्पाद विफल '। यकीन नहीं है कि यह क्यों विफल होगा। – Ecnalyr
कुछ नोट्स: 1) जब भी संभव हो, 'हमेशा' sort'by' पर 'sort_by' का उपयोग करना चाहिए (अधिक घोषणात्मक, अधिक संक्षिप्त, अधिक कुशल)। ऊपर दिखाए गए सभी स्निपेट में इसका उपयोग करना संभव है। 2) क्या मैं गैर-विनाशकारी 'संख्यात्मक # sort_by' से लिंक करना बेहतर कर सकता हूं, जब भी संभव हो, इन-प्लेस अपडेट से बचा जाना चाहिए। 3) '@ product.sort_by (&: on_sale?)'। – tokland
लगता है कि '<=> 'बूलियन के लिए सही काम नहीं करता है (रूबी-1.9.3-पी 327 में)। इसे में अब देख रहे हैं, हाँ ... http://grosser.it/2010/07/30/ruby-true-false-comparison-with/ पिछले संस्करण – AlexChaffee