2016-04-14 18 views
0

HABTM ilişkisinde olan kullanıcılara dayalı bir Konuşma sorgusu sormaya çalışıyorum. conversations, users ve conversations_users tablolarım var ve görüşmelerde bulunanlara göre konuşmaları almam gerekiyor.HABTM eşleşmesine bağlı olarak Rails sorgusu

Conversation modelinde :users ile HABTM ilişkisi vardır.

Bunu denedim:

Conversation.includes(:users).where(users: {id: [8,10]})

ama bir OR deyimi kullanır ve ben gerekli olması hem 8 ve 10 ihtiyaç

+0

Soruyu anladığımdan emin değilim ve doğru olduğundan emin olmak için modellerinizi göremiyorum. Ancak, belirli bir görüşmeye ait olan kullanıcıların listesini almak için Conversation.users adlı kullanıcının adını söyleyebilmeniz gerekir. Bu işe yaramıyor mu, üretmiyor mu? – trh

+0

Her bir sohbeti sorgulayabilir ve sonra her kullanıcı için sorgulayabilir ve ihtiyacım olan kullanıcılara karşı kontrol edebilirim, ancak bu neden çok yoğun görünüyor. –

cevap

0

Tamam görünüyor şu ihtiyacım olanı yapacak :

user_ids = [8,10] 

Conversation.joins(:users) 
.where(users: {id: user_ids}) 
.group("conversations.id") 
.having(['COUNT(*) = ?', user_ids.count]) 

fazla ayrıntı

için this yanıta bakın
İlgili konular