Как создать массив на основе значений, которых нет в другом массиве? - PullRequest
0 голосов
/ 29 апреля 2020

Это мой 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

1 Ответ

0 голосов
/ 29 апреля 2020

Попробуйте следующим образом

@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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...