2010-11-27 16 views
6

İki tabloyu birleştirmeye ve yalnızca modelle ilişkili olanları değil tüm sütunları döndürmeye çalışıyorum.Raylar 3 Katılmadan Tüm Sütunları Geri Döndürme

Comment.joins(:user).select("*") 

SQL iyi görünüyor, ama yine de, sadece yorum ve onunla ilişkili kullanıcı bilgi hiçbiri verir:

Böyle bir şey şuna benzer var.

* ve sadece comments.*'u nasıl alabilirim?

cevap

7

Ne

comments = Comment.includes(:user).all 

Şimdi comments Eğer döngü gerekecek bu nedenle tüm kullanıcıların görmek için üzerinden bir dizi olacak hakkında.

#won't work 
comments.user 

#should work 
comments[0].user 

comments.each do |comment| 
    puts comment.user.name #or whatever 
end 
+0

Yine de kullanıcı bilgilerinin gösterilemedi. Mishka'nın başına gidin ve bana yardım edin;) – Dex

+0

Nice Davis referansı. – rwilliams

+0

Çok uzun zamandır;). Bu çalışıyor. Her şeyin hevesle yüklü olduğundan emin olmak istedim. – Dex

1

Comment.select ('*') içerir.

comments = Comment.joins(:user).includes(:user) 

Ama burada sizin konsolda çıktı görüntülüyorsanız ben, oluyor düşünüyorum ne: (: kullanıcı)

+0

Sağ - Eğer SQL veya sadece geri verileri alma hakkında endişe olsaydı emin değildi. Bu durumda, hem Yorumlar hem de Kullanıcılar DB'ye geri dönmek zorunda kalmadan geri alırsınız. – Cory

+0

Sadece yorum yapın. ("Yorumlar. *, Kullanıcılar. *") – Cory

2

Bu çalışması gerekir windows, konsol çıktısının yalnızca döndürülen kök düzey nesnesini yansıttığını/incelediğini düşünüyorum.

Sadece yukarıdaki kodu gerçekleştirdiğim bir deneme yaptım. Terminal çıkışı, yorumları getirdiğini ancak ilgili kullanıcıyı bahsetmediğini kaydetti. Ardından, veritabanını, ikinci bir sorgu veritabanına karşı yürütülemeyecek şekilde kapattım, daha sonra ilgili kullanıcı için, ör.

comments.user 

hiçbir veritabanı bağlantısı denendi çünkü zaten hevesle, yüklenmiş kanıtlıyor konsol çıkış kullanıcı,.

+0

İlginç. Aynı şeyi merak ediyordum. Sorguların önbelleğe alınması, kafa karıştırıcı olsa da, 'comments.user' komutunu çalıştırdığınızda bir sorgunun iptal edilip edilmediğini de görebilirsiniz. – wuliwong