2012-04-26 11 views
11

Diciamo che ho due modelli: Corso e Corso programmato.Rails 3. ordina per modello associato

Il modello del corso ha un attributo nome. has_many

corso: in programma corsi scheduled_courses: belongs_to corso

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

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

Come posso fare una query ActiveRecord per ordinare i corsi programmati in ordine alfabetico?

+2

Prova questo: http://stackoverflow.com/questions/1530131/rails-order-using-a-has-many-belongs-to-relationship – luacassus

+0

Dovresti pubblicare ciò che hai provato ... – EricM

risposta

18

try ...

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

Se questo non funziona, potrebbe essere necessario chiamare .all prima unisce condizione, in questo modo:

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

Come luacassus detto, this answer can help ; Penso che la sintassi in questa risposta sia pre-Arel (ActiveRecord 3), ma riuscirà a completare il lavoro. Spero possa aiutare!

EDIT:

Come accennato dal @FellowStranger, la sintassi corretta sembra al giorno d'oggi per essere

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

Si noti che il nome della tabella dovrebbe essere al plurale. Questo codice è testato

+1

Questa risposta è più corretto, o dovrebbe essere selezionato come risposta accettata o la risposta che Ben Kreeger ha dato bisogno di editing. – RickyD

Problemi correlati