0

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

谢谢

4

1 回答 1

1

当您对两个查询都使用 id 列时,您可以在进行查找之前将两者的 id 结合起来@user.tags@user.likes

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

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

于 2012-06-09T11:05:52.287 回答