मैं सोच रहा हूँ कि Rails3 में संबंध के माध्यम से has_many से अद्वितीय रिकॉर्ड प्रदर्शित करने का सबसे अच्छा तरीका क्या है।
मेरे तीन मॉडल हैं:
class User < ActiveRecord::Base
has_many :orders
has_many :products, :through => :orders
end
class Products < ActiveRecord::Base
has_many :orders
has_many :users, :through => :orders
end
class Order < ActiveRecord::Base
belongs_to :user, :counter_cache => true
belongs_to :product, :counter_cache => true
end
कहते हैं कि मैं उन सभी उत्पादों को सूचीबद्ध करना चाहता हूं जो एक ग्राहक ने अपने शो पेज पर ऑर्डर किया है।
उन्होंने कई उत्पादों को कई बार ऑर्डर किया होगा, इसलिए मैं आदेशों की संख्या के आधार पर अवरोही क्रम में प्रदर्शित करने के लिए काउंटर_ कैश का उपयोग कर रहा हूं।
लेकिन, यदि उन्होंने कई बार किसी उत्पाद का ऑर्डर दिया है, तो मुझे यह सुनिश्चित करने की आवश्यकता है कि प्रत्येक उत्पाद केवल एक बार सूचीबद्ध हो।
@products = @user.products.ranked(:limit => 10).uniq!
किसी उत्पाद के लिए कई ऑर्डर रिकॉर्ड होने पर काम करता है, लेकिन यदि कोई उत्पाद केवल एक बार ऑर्डर किया गया हो तो त्रुटि उत्पन्न करता है। (रैंक कस्टम फंक्शन फ़ंक्शन को कहीं और परिभाषित किया गया है)
एक और विकल्प है:
@products = @user.products.ranked(:limit => 10, :select => "DISTINCT(ID)")
मुझे विश्वास नहीं है कि मैं यहाँ सही दृष्टिकोण पर हूँ।
क्या किसी और ने इससे निबटा है? आप किन मुद्दों के खिलाफ आए? मैं .unique के बीच अंतर के बारे में अधिक जानकारी कहां प्राप्त कर सकता हूं! और DISTINCT ()?
संबंध के माध्यम से, has_many के माध्यम से अनूठे रिकॉर्ड की सूची बनाने का सबसे अच्छा तरीका क्या है?
धन्यवाद