#ruby-on-rails
#ruby-on-rails
Вопрос:
Не могли бы вы, пожалуйста, помочь мне с этим запросом? Я все еще не могу понять, как этого добиться.
Существует модель команды, в которой есть пользователи и списки.
Команда
has_many :lists
has_many :users
И между пользователями и списками также существует связь «многие ко многим», которая представляет, к каким спискам пользователь имеет доступ.
list
has_many :accesses
has_many :users, through: :accesses
belongs_to :team
user
has_many :accesses
has_many :lists, through: :accesses
belongs_to :team
access
belongs_to :list
belongs_to :user
Я хотел бы получить все списки, принадлежащие команде пользователей, но у какого пользователя тоже нет доступа.
Я пробовал это, но это не кажется правильным:
List.joins(:team).joins(:user).where.not(users: { id: @user.id })
У меня также есть метод с именем team.lists, который позволяет захватывать все списки команды, но joins с ним не работает.
Ответ №1:
Как насчет того, чтобы немного разделить это?
users_lists_ids = @user.lists.pluck(:id)
@user.team.lists.where('id NOT IN (?)', users_lists_ids)