2012-06-09 31 views
0

在Rails 3.2中,在用戶展示頁面上我試圖展示用戶喜歡或標記的用戶列表。如何對兩個關聯執行OR查詢?

@user = User.find(params[:id]) 
@users = User.where((id: @user.tags.uniq.map(&:user_id)) | (id: @user.likes.uniq.map(&:user_id))) 

這是一個語法錯誤。我嘗試了其他一些排列,但沒有運氣。

對兩個關聯執行OR查詢的正確語法是什麼?

感謝

回答

1

當你正在使用的ID列的兩個查詢,你可以做一個查找之前結合了@user.tags@user.likes的ID。

@user = User.find(params[:id]) 
user_ids = (@user.tags.map(&:user_id) + @user.likes.map(&:user_id)) 
@users = User.find(user_ids.uniq) 

你可以改進這個更多,但這看起來更容易理解我。

+0

不錯!我需要'where(id:user_ids.uniq)'而不是'find',但那不是重點。這是一個非常好的解決方案。謝謝! –