2012-09-13 48 views
0

我有標籤和任務的標記系統鏈接(標籤必須通過TagTask許多任務,反之亦然)ActiveRecord的:從另一個模型

我想要做的就是創建一個返回所有任務的範圍這是在所有的標籤提供。因此,在標籤模型,它看起來像這樣:

def self.combined_tasks(tag_ids) 
    tasks = [] 
    tag_ids.each do |tag_id| 
     tasks << self.find(tag_id).tasks 
    end 

    tasks.inject { |result, elem| result & elem } 
end 

的困難是,我想不出任何可鏈接的方式創建任務模型內的範圍,有效地做到這一點。通過

def self.in_all_tags(tags_ids) 
    tags = Tag.combined_tasks(tag_ids) 
end 

作品手掌觸摸它關閉的標籤模式,但理解它似乎並沒有成爲可鏈接到其他領域。

任何建議表示讚賞

回答

0

嘗試:

Task.joins(:tag_tasks).where(tag_tasks: {tag_id: tag_ids}).uniq