2013-07-17 44 views
2

我有以下模式:Rails的活動記錄查詢雙重嵌套的聯接與選擇呼叫

照片has manyhas many用戶。

我將此Rails服務器用作iOS應用程序的後端,並且在添加照片時不斷需要將通知推送給組的所有相關用戶。

我的問題是找到最便宜的查詢來解決只受User.ids影響。

到目前爲止,我有

Photo.find(1).groups.joins(:users) 

我知道我必須把一個選擇參數在此之後,卻無法找出語法我的生活。

給定一張照片,我正在尋找最有效的方法來查找受影響的用戶標識的集合。

任何幫助將不勝感激!

+0

'Group.where(photo_id:1).users.collect {| u |把u.id}作爲照片has_many組,所以groups belongs_to照片和gorups表有photo_id作爲外鍵,所以請試試這個 –

回答

0
users_id = [] 
Group.where(photo_id: 1).users.collect{|u| users_id << u.id} 
puts users_id 

至於照片has_many羣體,因此,組belongs_to照片和組表有photo_id爲外鍵。

所以,請試試這個。

1

照片中的模型,你可以有另一種稱爲關聯用戶

has_many :group_users, :through => :groups, :source => :users 

那麼你可以通過下面的代碼

@photo = Photo.includes([:group_users]).where("photos.id = ?", 1).first 
@affected_users = [] 
@photo.group_users.map {|user| @affected_users << user.id} 

現在@affected_users包含所有用戶ID找到用戶。