2010-10-15 15 views

Odpowiedz

60

Po prostu trzeba być bardziej ostrożnym z rzędu tych metod w tym przypadku:

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

, które wydaje się nie działać. – 99miles

+2

Co się dzieje? Zawsze możesz użyć starego sposobu: 'Student.find (12,: include =>: teacher)' –

+2

Otrzymuje rekord o identyfikatorze 12, ale bez załączników. "Stary" sposób nie działa już w wersji 3.0. Mogę go uruchomić w ten sposób Student.find_by_id (12) .to_json (: include =>: teacher), ale to nie jest to, co chcę – 99miles

0

Można spróbować „gdzie” zamiast „znaleźć”:

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

; (nie., Który nie działa albo – 99miles

+0

Próbowałem czegoś podobnego na jednym z moich modeli i działało w Railsach 3, czy jesteś pewien, że masz skonfigurowane relacje "belongs_to" i "has_many"? –

+0

Tak, to bardzo dziwne b/c działa dobrze, gdy umieściłem include w metodzie to_json, więc wygląda na to, że wszystko jest ustawione dobrze . – 99miles

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

powinien działać.

Czy możemy zobaczyć Twoje modele?

6

Old pytanie wiem, ale tylko w przypadku, gdy ktoś pomaga ...

Uprawiając jak @student = Student.includes(:teacher).where(:id => 12) zwraca tablicę, a następnie przy użyciu więc coś takiego jak @student.id nie działa.

Zamiast tego można zrobić:

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

Chociaż Student.includes(:teacher).find(12) powinny działać, ale można korzystać z wersji where jeśli trzeba szukać innych wielu pól /.

Powiązane problemy