2011-12-18 20 views
8

Belirli bir kullanıcıdan gelen tüm yayınları sorgulamam ve tüm yorumları ve yoruma ait olan kullanıcıyı dahil etmem gerekiyor.Raylar, iç içe geçmiş ilişkileri içerir

class User < ... 
    has_many :posts 
    has_many :comments 
end 

class Post < ... 
    belongs_to :user 
    has_many :comments 
end 

class Comment < ... 
    belongs_to :user 
    belongs_to :post 
end 

@posts = current_user.posts.include(:comments) 

Ayrıca, kullanıcı yorumlarını almak mümkün mü? Çok sayıda yayın ve yorum listesi yapıyorum. Her yorum kullanıcısını sorgulamak istemiyorum.

@posts = current_user.posts.includes(:comments => :user) 

bu konuda daha fazla oku deneyin/Tobias

cevap

26

Thx here hakkında ilişki tanımı deyimi de nasıl ekleriz

+1

mümkün bu sorguda yorumunu sınırlamak mı. Sadece dahil edilecek en son 5 yorumu istiyorum. Eğer loop shout.comments.limit (5) yeni bir sorgu çalıştırılırsa – sandelius

+1

cevabımda: 'Post has_many: yorumlar,: include => [: kullanıcı],: limit => 5' – clyfe

+0

Evet ama ayrıca yapmadım Tüm yorumları bir sayfaya getirmek, hatta onları sayfalandırmak için mi? – sandelius

10

?

:
bu amaç, yüklendiğinde yüklenen istekli olmalıdır ikinci dereceden dernekler belirtin içerir.

class Post < 
    belongs_to :user 
    has_many :comments, :include => [:user], :limit => 5 
end 
+1

Şunlara benzemiyor: Geçerli bir seçenek (en azından Rails 4.1 ile değil), bir alternatif var mı? – FeifanZ

+0

@FeifanZ, 'includes' olmalıdır. O zaman iyi çalışmalı – ahnbizcad

İlgili konular