2009-03-16 14 views
10

मेरे पास 'अनुरोध' ऑब्जेक्ट्स की एक सूची है, जिनमें से प्रत्येक में सामान्य सामान्य सक्रिय गुण हैं। अनुरोध तालिका गेम तालिका से संबंधित तालिका, 'games_requests,' के साथ संबंधित है ताकि अनुरोध के पास अनुरोध हो .games array।रेल: मैं कुछ क्षेत्रों में अद्वितीय रिकॉर्ड कैसे प्राप्त करूं?

सवाल यह है कि, अंतिम एन अद्वितीय अनुरोधों के लिए एक खोज करने का कोई तरीका है, जहां गेम कॉलम और कुछ अन्य लोगों द्वारा विशिष्टता को परिभाषित किया गया है, लेकिन विशेष रूप से अन्य कॉलम को अनदेखा करता है (अनुरोधकर्ता उपयोगकर्ता के नाम की तरह?)

मैंने एक वाक्यविन्यास देखा जैसे 'ढूंढें (: सब,: सीमा => 5,: शामिल => [: गेम्स,: मंच])' लेकिन वह डुप्लीकेट लौट रहा था।

धन्यवाद ...

संपादित करें: एक महान प्रतिक्रिया के लिए अराजकता के लिए धन्यवाद। आपने मुझे वास्तव में करीब पाया है, लेकिन मुझे अभी भी वैध अनुरोध ऑब्जेक्ट्स होने के लिए रिटर्न की आवश्यकता है: पहले 5 रिकॉर्ड जो अनुरोधित पंक्तियों में अलग हैं। जैसा कि आपने इसे बनाया है, मैं बस खोज का उपयोग कर सकता हूं और फिर तालिका में पहली पंक्ति के लिए दूसरा खोज करता हूं जो पहले खोज द्वारा लौटाए गए प्रत्येक सेट से मेल खाता है।

संपादित करें:

Games.find(
    :all, :limit => 5, 
    :include => [:games, :requests], 
    :group => 'games, whatever, whatever_else' 
) 

... एक SQL त्रुटि देता है:

Mysql::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games` GROUP BY games 

मैं मैं क्या अपने प्रोजेक्ट के लिए सही माना के लिए कुछ बदलाव किए हैं; गेम के बजाए अनुरोधों की एक सूची प्राप्त करना, आदि:

Request.find(
    :all, :order=>"id DESC", :limit=>5, 
    :include=>[:games], #including requests here generates an sql error 
    :group=>'games, etc' #mysql error: games isn't an attribute of requests 
    :conditions=>'etc' 
) 

मुझे लगता है कि मुझे यहां शामिल होना होगा: join => विकल्प।

उत्तर

8
Games.find(
    :all, :limit => 5, 
    :include => [:games, :requests], 
    :group => 'games, whatever, whatever_else' 
) 
+0

यह खेल, जो कुछ भी है, और whatever_else कॉलम देता है। क्या पूर्ण अनुरोध ऑब्जेक्ट्स को वापस करने का कोई तरीका है, केवल उन लोगों को बाहर निकालना जो इन कॉलम में विशिष्टता को विफल करते हैं? – Sniggerfardimungus

+0

हाँ। प्रति संपादित – chaos

+0

एचआरएम। किसी तालिका में 'गेम' के साथ एक वर्चुअल विशेषता होने के साथ कोई समस्या है। (संपादित प्रश्न देखें) – Sniggerfardimungus

0

मुझे लगता है कि आप द्वारा इस find_by_sql और ग्रुप का उपयोग कर सकेंगे:

Games.find_by_sql("SELECT * FROM games GROUP BY user_id") 
6

रेल uniq_by.It भी संघ और रिटर्न सरणी के साथ काम करता कोशिश करो।

@document = Model.uniq_by(&:field)

अधिक Detail

+2

सोचें कि 'uniq_by' को कम किया गया है और' uniq' द्वारा प्रतिस्थापित किया गया है। – Cimm

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