arrays - 如何基于不在另一个数组中的值创建一个数组?
问题描述
这是我的 Teams-Controller.rb
@my_teams = current_user.teams.all
@available_teams = Team.where.not(@my_teams.all)
end
我正在尝试显示用户当前尚未加入的所有团队。我有三个模型 Team、TeamMember 和 User。目的是将用户带到可用团队的 show 方法并允许他们加入团队。团队模型 team.rb
class Team < ApplicationRecord
has_many :team_members
has_many :users, through: :team_members
end
用户模型 user.rb
class User < ApplicationRecord
has_many :team_members
has_many :teams, through: :team_members
end
团队成员模型
class TeamMember < ApplicationRecord
belongs_to :user
belongs_to :team
end
解决方案
试试这个方法
@my_teams = current_user.teams
@available_teams = Team.where.not(id: @my_teams.pluck(:id))
基本上我们想要实现的是一个类似这样的 SQL 查询
SELECT *
FROM teams
WHERE id NOT IN (1, 2, 3)
推荐阅读
- image - 每次我尝试使用 Scikit-image 导入图像时都会出错
- git-lfs - 逐渐将 repo 转换为对某些文件使用 git-lfs。一次一个文件
- git - 更改是来自 gitlab 活动的不同合并请求
- python - RuntimeError:b'初始化列表中没有参数'(geopandas)
- c++ - OpenMP 不能与我的 Visual Studio 一起使用?
- java - LDAP - Spring Boot |获取 javax.naming.CommunicationException | 拒绝连接
- sql - oracle SQL - 取消透视
- c# - 如何在登录表单中禁用用户更改按钮
- bash - Bash:无法从“读取”命令变量中扩展文件名中的通配符
- javascript - 通过 JavaScript 回调向 Datatable 添加新列