2011-02-03 10 views
13

Tengo una pregunta bastante sencillo en Rails 3 a la que no puedo parecer para encontrar la respuesta:Rails 3 Clasificación a través de la asociación de padres

Decir que tengo 2 modelos: cliente, del proyecto. Un has_many cliente proyecta Proyecto belongs_to cliente

ahora quiero ordenar una lista de proyectos por "nombre del cliente" mediante Active Record (hacerlo con una matriz rubí es bastante fácil, pero me imagino que esto le ayudará problemática una vez que el número de registros de proyectos crece).

¿Cómo hago esto con ActiveRecord?

Respuesta

30
Project.joins(:customer).order('customers.name') 
+0

Yo probé esa pero que me Nets: ActiveRecord :: StatementInvalid: MySQL :: Error: Desconocido columna 'customer.name' en 'cláusula de orden.': SELECT 'projects' * FROM' proyectos 'INNER JOIN' customers' ON ​​'customers'. Id' =' projects''customer_id' ORDER BY customer.name – ErwinM

+3

Use 'customers.name', no 'customer.name' (reparado en la respuesta) – valodzka

+2

@valodzka, Sé que esto es de lo que se trata esta comunidad, pero gracias por esa aclaración. Estaba usando la sintaxis singular porque tenía una relación has_one sin darme cuenta todavía tenía que ser plural (customers.name vs customer.name) como dijiste en el comentario anterior y la respuesta. Esto me ayudó un montón, incluso dos años después de haberlo respondido. – JonathanSimmons

Cuestiones relacionadas