2013-08-28 4 views
2

사용자 목록을 반환하는 쿼리를 저장하는 테이블이 있습니다. 그런 다음 논리 "AND"를 사용하여 여러 쿼리를 실행하는 "Banana"모델에 "get_public"메서드가 있습니다. 내가여러 쿼리에 대한 객체 배열 대신 레일스 ActiveRecord 가져 오기

Banana.find(x).get_public을 수행 할 때

그래서, 사용자의 배열 (즉, 바나나 객체에 적합한 사람을)받을 수 있습니다. 내가 액티브을 얻을 수 있다면 :: 관계를 대신 좋은 것,

def get_public 
    pb = [] 
    banana_queries.each do |q| 
    pb << User.find_by_sql(q.query) 
    end 
    pb.inject(:'&') 
end 

그러나 :

get_public 방법이 같다. 다음과 같은 일을하고 싶습니다. Banana.find(x).get_public.where(...) get_public을 수정하고이를 수행하는 방법은 없나요?

+0

당신이 관계 쿼리 메소드를 얻을 클래스의'액티브 :: QueryMethods' 포함 봤어 :-) 너무 많은 점을 놓친 적이 없어요? – Bala

+0

이 경우''pb.inject (: '&')'라고해야 할 것이 무엇이며 테스트 한 적이 있습니까? –

+0

배열의 itens 사이의 "논리 AND"입니다. –

답변

1

나는이 문제를 확실하게 해결하지 못했지만, 어쨌든 도와 주려고합니다.

으로는 here 액티브 :: 관계를 반환

  • 발견 (및 관련 동적 방법)

그래서 내가 당신의 쿼리로 분할 제안 단일 모델 객체를 반환를 especified : '조인'및 '어디서'필드. 새 코드는 다음과 같아야합니다.

pb << User.joins(q.query_joins).where(q.query_where) 

또한 메소드는 레일 4에서 사용되지 않으므로 where를 사용하는 것이 좋습니다.

희망 나는

관련 문제