首页 > 解决方案 > 如何从发现页面中排除当前用户已经关注的用户?

问题描述

我正在尝试排除发现页面中已经关注的用户。页面加载current_user后,应将其关注的用户从发现页面中删除。到目前为止,我已经设法current_user从发现页面中排除:

def User.all_except(user)
  where.not(id: user)
end  

尽管不太确定如何从发现页面逐步淘汰关注的用户。

是不是类似于上面的代码分别从关系模型followed_id中挑出来的应该如下?:

 Relationship.where.not(follower_id: user.id)

标签: ruby-on-rails

解决方案


不确定字段名称是否正确,但假设您具有与列 follower_id 和 follow_id 的模型关系,它应该类似于:

User.where.not(id: Relationship.where(follower_id: user.id).select(:followed_id))

它将生成一个像这样的子查询:

SELECT ... FROM users WHERE id NOT IN (SELECT following_id FROM ...)


推荐阅读