2010-10-15 4 views

Antwort

60

Sie müssen nur vorsichtiger mit der Reihenfolge der Methoden in diesem Fall:

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

das scheint nicht zu funktionieren. – 99miles

+2

Nun, was macht es? Sie können immer den alten Weg verwenden: 'Student.find (12,: include =>: teacher)' –

+2

Er erhält den Datensatz bei ID 12, aber ohne die Includes. Der "alte" Weg funktioniert in 3.0 nicht mehr. Ich kann es auf diese Weise arbeiten lassen Student.find_by_id (12) .to_json (: include =>: lehrer) aber das ist nicht, was ich will – 99miles

0

Sie könnten versuchen, "wo" statt "finden":

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

; (Nein. Das funktioniert nicht – 99miles

+0

Ich habe versucht, etwas ähnliches auf einem meiner Modelle und es funktionierte in Rails 3, bist du sicher, dass du die Beziehungen "gehört_zu" und "has_many" eingerichtet hast? –

+0

Ja, es ist sehr seltsam, es funktioniert gut, wenn ich das Include in die to_json-Methode setze, also scheint alles gut eingerichtet zu sein . – 99miles

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

sollte funktionieren.

Können wir Ihre Modelle sehen?

6

alte Frage, die ich weiß, aber nur für den Fall hilft das jemand ...

so etwas wie @student = Student.includes(:teacher).where(:id => 12) Doing ein Array zurückgibt und so dann wie @student.id mit etwas nicht funktioniert.

Stattdessen könnten Sie tun:

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

Obwohl Student.includes(:teacher).find(12) sollte funktionieren, aber Sie können die where Version verwenden, wenn Sie von anderen/mehrere Felder suchen müssen.

Verwandte Themen