2012-09-13 2 views
0

다른 모델에서 체인 연결액티브는 : 나는 태그 및 작업의 태그 시스템을

는 내가 뭘하려는 것은 모든 작업을 반환하는 범위를 만들 것입니다 (태그는 많은 TagTask을 통해 작업 및 그 반대가 있습니다) 모든 태그에 있습니다. 그래서, 태그 모델에서, 그것은 다음과 같습니다

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