ruby-on-rails - 如何从发现页面中排除当前用户已经关注的用户?
问题描述
我正在尝试排除发现页面中已经关注的用户。页面加载current_user
后,应将其关注的用户从发现页面中删除。到目前为止,我已经设法current_user
从发现页面中排除:
def User.all_except(user)
where.not(id: user)
end
尽管不太确定如何从发现页面逐步淘汰关注的用户。
是不是类似于上面的代码分别从关系模型followed_id
中挑出来的应该如下?:
Relationship.where.not(follower_id: user.id)
解决方案
不确定字段名称是否正确,但假设您具有与列 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 ...)
推荐阅读
- jenkins - Jenkins管道,将分支名称传递给gradle build
- angular - 在 Nginx 上部署 Angular 6 应用程序 - 禁止
- ios - 我是否需要获得后台位置更新的“始终”授权?
- django - 具有中继限制基于 ID 的查询访问的 Django 石墨烯
- html - Div hover is not working in every browser
- r - mailR 任务阻塞 R 服务器端口
- laravel - 使用 laravel 的 paypal 订单总额
- android - FileProvider 异常:IllegalArgumentException:未能找到包含的已配置根
- python - 在人体姿态估计上训练分类器
- python-3.x - 将特定文件夹从一个位置复制到另一个 Python