2015-09-17 19 views

cevap

2

en iyi yolu:

Comment.joins(:post).where(post: {published: true}) 

veya bir ActiveRecord İlişkisi olan bir posts değişkeniniz varsa:

Comment.joins(:post).where(post: posts) 
2

Tabii, bir kaç yolu vardır. map ve flatten numaralarını kullanarak çok az sayıda kayıt için kullanabilirsiniz. Yorumları toplu olarak includes kullanarak yüklediğinizden emin olun. Veya bir birleştirmeyi kullanabilirsiniz. Bu, veritabanına daha fazla çalışma koyar, ki bu daha hızlıdır, ancak şema ve veri kümenize bağlıdır. Çoğaltmaları önlemek için genellikle uniq'u kullanmak isteyeceksiniz. Ayrıca, birleştirilen tablolardaki tüm cümlelerdeki herhangi bir açık parçayı tam olarak nitelendirdiğinizden emin olun, örn. where('created_at < ?', ...) yerine where('posts.created_at < ?', ...) kullanın.

Düzenleme: (daha fazla satır aşağı kapsamlı olabilir) bir ilişki dönmek istediğiniz durumda

ilk bir diğer varyantı,:

Comment.where(id: Post.where(published: true).pluck(:id)) 
+0

Belki 'Comment.where (post_id:'? – hlcs

İlgili konular