Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何对两个关联执行OR查询?_Ruby On Rails_Activerecord - Fatal编程技术网

Ruby on rails 如何对两个关联执行OR查询?

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列进行两个查询时,您可以在执行查找

在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.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
,但这不是重点。这是一个非常好的解决方案。谢谢