2012-04-26 15 views
11

द्वारा क्रमबद्ध करें मान लें कि मेरे पास दो मॉडल हैं: कोर्स और शेड्यूल्ड कॉर्स।रेल 3. संबंधित मॉडल

कोर्स मॉडल का नाम विशेषता है।

पाठ्यक्रम has_many: अनुसूचित पाठ्यक्रमों scheduled_courses: belongs_to पाठ्यक्रम

courses 
id | name 
1 | biology 
2 | history 
3 | chemistry 
4 | literature 

scheduled_courses 
id | course_id 
1 | 2 
2 | 4 
3 | 1 
4 | 2 

मैं वर्णानुक्रम अनुसूचित पाठ्यक्रमों सुलझाने के लिए एक ActiveRecord क्वेरी कर सकते हैं कैसे?

+2

इसे आजमाएं: http://stackoverflow.com/questions/1530131/rails-order-using-a-has-many-belongs-to-relationship – luacassus

+0

आपको जो भी प्रयास किया गया है उसे पोस्ट करना चाहिए ... – EricM

उत्तर

18

कोशिश ...

ScheduledCourse.joins(:course).order('course.name') 

अगर यह काम नहीं करता है, इससे पहले कि आप अपनी हालत मिलती .all कॉल करने के लिए है, तो जैसे आवश्यकता हो सकती है: luacassus

ScheduledCourse.all.joins(:course).order('course.name') 

की तरह कहा, this answer can help ; मुझे लगता है कि उस उत्तर में वाक्यविन्यास प्री-एरल (ActiveRecord 3) है, लेकिन यह काम पूरा हो जाएगा। उम्मीद है की वो मदद करदे!

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

@FellowStranger से उल्लेख किया है, सही सिंटैक्स आजकल होने की

ScheduledCourse.joins(:course).order('courses.name') 
11
ScheduledCourse.joins(:course).order('courses.name asc') 

ध्यान दें कि तालिका नाम बहुवचन में होना चाहिए लगता है। यह कोड परीक्षण किया गया है।

+1

यह उत्तर अधिक सही है, या तो इसे स्वीकार किए गए उत्तर के रूप में चुना जाना चाहिए या उत्तर बेन क्रिगर को संपादन की आवश्यकता है। – RickyD

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