ruby-on-rails - 选择所有关联都存在的记录
问题描述
我有一个拥有多个级别的用户。假设我有 1、2、3 和 4 级。如何搜索与 2 级和 3 级关联但不与 4 级关联的用户?
我自己没有得到。我想首先关注“但是”之前的部分,但是我想出了一行:
User.includes(:levels).where(levels: {id: [2, 3]})
还返回仅与级别 2 关联的用户,而不仅是同时具有级别 2 和级别 3 的用户。
解决方案
如果获得的 id 的顺序仅为 [2,3],则以下将起作用。对于 [3, 2] 它将不显示任何记录。如果对象是按顺序排列的,那么它应该可以工作。
User.includes(:levels).map(&:levels).select { |l| l if l.ids == [2, 3] }
推荐阅读
- c# - 如何使用 Graph API 在 MS Teams 中发布消息
- javascript - 在里面使用上下文和钩子
- vim - 无法使用 VIM 折叠 python 注释
- python - conda 环境中的 Python 不是 conda python
- asp.net-core-mvc - 如何避免在 MVC 核心视图的条件代码中硬编码业务实体的值?
- windows - 为什么 macOS 处理屏幕分辨率的方式与 Windows 不同?
- c++ - 如何将 char 值用于字符串?
- python - Pip 安装 Keras 和 TensorFlow 缺少软件包?
- javascript - 为什么尝试访问 React 组件的类名会导致 ReferenceError?
- heroku - 连接两个免费的 Heroku 应用程序以同时唤醒