2010-10-15 9 views

Respuesta

60

Sólo hay que tener más cuidado con el orden de los métodos en este caso:

Student.includes(:teacher).find(12) 
+0

que no parece funcionar. – 99miles

+2

Bueno, ¿qué está haciendo? Siempre puedes usar el método anterior: 'Student.find (12,: include =>: teacher)' –

+2

Obtiene el registro en id 12, pero sin incluir. La forma "antigua" ya no funciona en 3.0. Puedo hacer que funcione de esta manera Student.find_by_id (12) .to_json (: include =>: teacher) pero eso no es lo que quiero – 99miles

0

usted podría intentar "donde" en lugar de "encontrar":

Student.includes(:teacher).where(:id => 12) 
+0

; (no, eso tampoco funciona – 99miles

+0

Intenté algo similar en uno de mis modelos y funcionó en Rails 3, ¿está seguro de que tiene configuradas las relaciones "belongs_to" y "has_many"? –

+0

Sí, es muy extraño b/c funciona bien cuando pongo el include en el método to_json, por lo que parece que todo está bien configurado . – 99miles

1
Student.includes(:teacher).where(:id => 12) 

debería funcionar.

¿Podemos ver sus modelos?

6

vieja pregunta que sé, pero por si acaso esto ayude a alguien ...

Hacer algo como @student = Student.includes(:teacher).where(:id => 12) devuelve una matriz y así a continuación, utilizando algo como @student.id no funciona.

su lugar se podría hacer:

@student = Student.includes(:teacher).where(:id => 12).first 

Aunque Student.includes(:teacher).find(12) debería funcionar, pero se puede utilizar la versión where si es necesario buscar por otros múltiples campos /.