2013-03-08 81 views
0

我有一個這樣的小組班。團隊有很多人。我有辦法將多個Active Record關係合併爲一個查詢嗎?

class Group < ActiveRecord::Base 
    has_many :people 
    def notices 
    Notice.where(:person_id => people).where("radius <= ?", radius) 
    end 
end 

在我的通知控制器中,我想顯示來自所有用戶組的所有通知,沒有重複。 目前我正在這樣做,這是跛腳。有沒有辦法將來自每個組的查詢合併爲一個關係而不是一個數組?

class NoticesController < ApplicationController 
    def index 
    @groups = current_person.groups 
    @notices = [] 
    @groups.each do |g| 
     @notices += g.notices 
    end 
    end 
end 

感謝

+0

你可以給一個更具體的例子?你是否有條件地鏈接活動記錄查詢? – jvnill 2013-03-08 13:08:24

+0

讓我編輯一個更具體的問題 – superluminary 2013-03-08 13:12:14

+1

成員是什麼? – 2013-03-08 13:22:09

回答

2

我假設有一個人模型。

好的。

試試這個。

在Person模型,添加這個

has_many :all_group_members, through: :groups, class_name: "Person" 

再加入此方法

def all_notices 
    Notice.where(:person_id => all_group_members.pluck(:id)).where("radius <= ?", radius) 
end 

最後在你的控制器u能做到這一點

current_person.all_notices 
相關問題