繁体   English   中英

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

[英]How to perform an OR query on two associations?

在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查询的正确语法是什么?

谢谢

当您对两个查询都使用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)

您可能可以进一步完善它,但是对我来说,这看起来更容易理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM