2009-11-11 12 views
7

मेरे पास मेरे ActiveRecord मॉडल में निम्न पंक्ति है:PostgreSQL, रेल और: आदेश => समस्या

class Record < ActiveRecord::Base 
    has_many :users, :through => :record_users, :uniq => true, :order => "record_users.index ASC" 

यह मुझे record.users को पढ़ने के लिए सक्षम करने का इरादा है ताकि मैं record_users मॉडल में इंडेक्स फ़ील्ड का उपयोग कर ऑर्डर कर सकूं।

समस्या यह है कि यह निम्न त्रुटि के साथ PostgreSQL पर विफल रहता है:

ActionView::TemplateError (PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 

क्या यह कार्य करने के लिए कथन को ठीक करने का कोई तरीका है?

+0

क्या आप जेनरेट किए गए एसक्यूएल पोस्ट कर सकते हैं? –

उत्तर

10

मुझे लगता है कि आप इसे ActiveRecord में एक बग कह सकते हैं। PosgreSQL MySQL से थोड़ा अधिक प्रतिबंधक है। (प्रकाश स्तंभ टिकट से नकल तो हम इसे वापस ला सकता है .. यह अमान्य चिह्नित किया गया था)

class Record < ActiveRecord::Base 
    has_many :users, 
    :through => :record_users, 
    :select => 'DISTINCT users.*, record_users.index', 
    :order => "record_users.index ASC" 
+0

आप कर सकते हैं, क्योंकि यह है। MySQL यह स्वीकार करने में थोड़ा अधिक अनुमोदित और गैर-मानक है। – MkV

+0

मुझे यह नहीं मिला - ऊपर मेरे समाधान के साथ क्या गलत है? मैं जानना चाहता हूं, क्योंकि मैं इसे पोस्टग्रेस पर चलने वाली अपनी परियोजना में उपयोग कर रहा हूं;) –

+0

कैस्पर, मुझे नहीं लगता कि जेम्स कह रहे थे कि यह एक खराब समाधान था ;-) इसके अलावा, क्या यह एक टाइपो - डिस्टिंट है? – cmaughan

1

मैं पहले जैसा कुछ चला गया और मुझे विश्वास है कि यह पीजीएसक्यूएल (https://rails.lighthouseapp.com/projects/8994/tickets/1711-has-many-through-association-with-order-causes-a-sql-error-with-postgresql) से संबंधित एक एआर बग है।

मुझे DISTINCT (: uniq) निर्देश छोड़कर इसके आसपास मिल गया और यूनिक रिकॉर्ड्स को एक और तरीके से हल किया। यद्यपि एक बमर की तरह।

2

बस GitHub पर रेल की समस्या ट्रैकर पर इस समस्या का पोस्ट: आप के बजाय इस तरह संघ की स्थापना करके ActiveRecord मदद कर सकते हैं:

https://github.com/rails/rails/issues/520

यह प्रचार करें तो आप इस अच्छी तरह से तय करना चाहते हैं! :)

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