Ich versuche so etwas zu tun, aber es funktioniert nicht. Wie würde ich das in Rails 3 machen?Wie finde ich find() mit includes() in Rails 3
Student.find(12).includes(:teacher)
Ich versuche so etwas zu tun, aber es funktioniert nicht. Wie würde ich das in Rails 3 machen?Wie finde ich find() mit includes() in Rails 3
Student.find(12).includes(:teacher)
Sie müssen nur vorsichtiger mit der Reihenfolge der Methoden in diesem Fall:
Student.includes(:teacher).find(12)
Sie könnten versuchen, "wo" statt "finden":
Student.includes(:teacher).where(:id => 12)
; (Nein. Das funktioniert nicht – 99miles
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? –
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
Student.includes(:teacher).where(:id => 12)
sollte funktionieren.
Können wir Ihre Modelle sehen?
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.
das scheint nicht zu funktionieren. – 99miles
Nun, was macht es? Sie können immer den alten Weg verwenden: 'Student.find (12,: include =>: teacher)' –
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