在Rails 3.2中,在用户显示页面上,我正在尝试显示用户喜欢或标记的用户列表。
@user = User.find(params[:id])
@users = User.where(( id: @user.tags.uniq.map(&:user_id)) | (id: @user.likes.uniq.map(&:user_id)) )
这会产生语法错误。我尝试了其他一些排列,但没有运气。
对两个关联执行OR查询的正确语法是什么?
由于
答案 0 :(得分: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)
你可以对此进行更多改进,但这对我来说更容易理解。