2010-10-15 24 views
36

İçinde bulunan() with() ile nasıl bulunurum? Bunun gibi bir şey yapmaya çalışıyorum ama işe yaramıyor. Bunu Rails 3'te nasıl yaparım?Rails 3

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

cevap

60

Sadece bu durumda yöntemlerin emriyle daha dikkatli olmak zorunda:

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

çalışmıyor gibi görünüyor. – 99miles

+2

Peki, ne yapıyor? Her zaman eski yolu kullanabilirsiniz: “Student.find (12,: include =>: teacher)” –

+2

Kayıt numarası 12'ye girer, ama içermez. "Eski" yolu artık 3.0'da çalışmıyor. Ben bu şekilde çalışmak için alabilirim. Öğrenci_Adı_by_id (12) .to_json (: include =>: öğretmen) ama istediğim bu değil – 99miles

0

Sen "nerede" yerine "bul" deneyebilirsiniz:

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

; (nope. Bu da çalışmıyor – 99miles

+0

Benim modellerden birinde benzer bir şey denedim ve Rails'de çalıştı 3, "belongs_to" ve "has_many" ilişkileri kurduğunuzdan emin misiniz? –

+0

Evet, to_json yöntemine eklediğimde çok işe yaramaz b/c çalışıyor, bu yüzden her şey yolunda gibi görünüyor . – 99miles

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

çalışmalıdır.

Modellerinizi görebilir miyiz?

6

Eski soru biliyorum ama her ihtimale karşı bu birileri ... @student = Student.includes(:teacher).where(:id => 12) gibi bir şey yapmak

dizisi döndürür ve böylece daha sonra çalışmıyor @student.id gibi bir şey kullanarak yardımcı olur. çalışması gerekir

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

Student.includes(:teacher).find(12) rağmen, ancak diğer/Birden fazla alanda arama yapmak gerekirse where sürümünü kullanabilirsiniz:

Bunun yerine yapabilirdi.