2014-03-13 3 views
0

다음 줄을 따라 뭔가를하고 싶습니다 : colleges.where("rotc.join(', ') & ?", rotc). 각 대학에는 rotc 문자열 속성이 있으며 (예 : "Air Force, Army, Navy") 사용자가 필터링 한 rotc 프로그램과 교차하는지 확인하고 싶습니다.레일스에서 ​​두 배열의 교차를 쿼리하는 방법은 무엇입니까?

screenshot은 내가 작성하려고하는 것을 보여줍니다.

하나의 문제는 내가 여기 join 방법을 사용할 수 없다는 것입니다. 또 다른 문제는 내가 & 방법을 사용할 수 있다고 생각하지 않는다는 것입니다.

어떻게하면이 쿼리를 실행할 수 있습니까?

if params[:rotc] = [] 
    colleges = College.none #or maybe College.where("rotc = ''") 
else 
    colleges = College.all 
    params[:rotc].each |rotc| do 
    colleges = colleges.where("rotc LIKE ?, "%#{rotc}%") 
    end 
end 

아마 청소기 방법이 있습니다,하지만 어쩌면이 :

답변

1

양식이이 ["Air Force", "Navy"] 같은 검사 값의 배열로 params[:rotc]을 돌려 보낼까지 같은 설정된다고 가정하면, 당신이 할 수있는 생각 몇 가지 아이디어를 줄 것입니다.

+0

감사합니다. 코드를 조금 바꿨지 만 중요한 것은 1)'.each' 루프와 2)'% '를 사용하는'LIKE' 연산자였습니다. –

+0

이미 알고 있었을 지 모르지만'each' 블록의'College.where [..]'는 후손을 위해'colleges.where [..]'여야합니다. –

관련 문제