2014-03-13 75 views
0

我想沿着這些路線做點什麼:colleges.where("rotc.join(', ') & ?", rotc)。每個學院都有一個rotc字符串屬性(例如"Air Force, Army, Navy"),我想看看它是否與用戶已經過濾的rotc程序相交。如何查詢Rails中兩個數組的交集?

screenshot顯示了我想要建立的。

我遇到的一個問題是我不能在這裏使用join方法。另一個問題是,我不認爲我也可以使用&方法。

我該如何執行此查詢?

回答

1

假設你的形式設置,使得它將返回params[:rotc]與像["Air Force", "Navy"]檢查值的數組,我想你可以這樣做:

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 

有可能是一個更清潔的方式,但也許這會給你一些想法。

+0

工作,謝謝!我稍微改了一些代碼,但關鍵的東西是1)'.each'循環,2)''''LIKE'運算符。 –

+0

你可能已經知道了這一點,但''每個'塊中的'College.where [..]'應該是'colleges.where [..]' - 爲後代編輯。 –