Ruby on rails 如何对两个关联执行OR查询?
在Rails3.2中,在用户显示页面上,我试图显示用户喜欢或标记的用户列表Ruby on rails 如何对两个关联执行OR查询?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在Rails3.2中,在用户显示页面上,我试图显示用户喜欢或标记的用户列表 @user = User.find(params[:id]) @users = User.where(( id: @user.tags.uniq.map(&:user_id)) | (id: @user.likes.uniq.map(&:user_id)) ) 这是一个语法错误。我尝试了一些其他的排列,但没有运气 对两个关联执行OR查询的正确语法是什么 谢谢当您使用id列进行两个查询时,您可以在执行查找
@user = User.find(params[:id])
@users = User.where(( id: @user.tags.uniq.map(&:user_id)) | (id: @user.likes.uniq.map(&:user_id)) )
这是一个语法错误。我尝试了一些其他的排列,但没有运气
对两个关联执行OR查询的正确语法是什么
谢谢当您使用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)
您可能可以进一步完善此功能,但我觉得它更容易理解。很好!我需要where(id:user\u ids.uniq)
而不是find
,但这不是重点。这是一个非常好的解决方案。谢谢