2015-12-28 4 views
0

У меня есть объект Рельсы массив списка пользователей и другого объект массив списка team_usersУдалить объект из списка объектов рельсов

Я хочу, чтобы показать список пользователей, которые не team_users, но не уверен, как идти об этом.

В моем коде

User.where("users.user_account_type IS NULL or users.user_account_type = 'standard_user'").joins(:user_organizations).where("user_organizations.organization_id = ? AND users.approved = true AND users.locked_at IS NULL", 13) 

Этот код возвращает мне список пользователей

@team_members = TeamMember.all 

Это возвращает мне все пользователи, которые находятся в team_members. Эта таблица имеет team_member_id как внешний ключ для user.id в таблице User.

User.where("users.user_account_type IS NULL or users.user_account_type = 'standard_user'").joins(:user_organizations).where("user_organizations.organization_id = ? AND users.approved = true AND users.locked_at IS NULL", 13).joins(:team_members).where("team_members.team_member_id != users.id") 

Я пробовал использовать этот код, но он не работает. он не возвращает никаких записей.

Любая помощь приветствуется

ответ

0

Что-то, как это должно работать:

in_teams = TeamMember.select(:team_member_id) 
users_without_team = User.where.not(id: in_teams) 

Также вы можете использовать хэши вместо строк для читаемости:

Users.joins(:user_organization).where(approved: true, locked_at: nil, user_organizations: {organization_id: 13}) 
0

Я не уверен, что вы хотите точно, но это возвращает только пользователи, которые не имеют в team_users счета станд.

User.All.Where(x=>x.Users.user_account_type !="team_users") 
Смежные вопросы